gpt4 book ai didi

javascript - 中断原型(prototype)处理程序,alert() 与 event.stop()

转载 作者:行者123 更新时间:2023-11-30 09:08:34 26 4
gpt4 key购买 nike

这是我正在使用的测试页。这个版本工作正常,转发到#success:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head>
<script type="text/javascript" src="prototype.js"></script>
</head><body>

<form id='form' method='POST' action='#fail'>
<button id='button'>Oh my giddy aunt!</button>

<script type="text/javascript">
var fn = function() {
$('form').action = "#success";
$('form').submit();
}
$('button').observe('mousedown', fn);
</script>
</form>

</body></html>

如果我清空处理程序:

var fn = function() {
}

表单已提交,但这次我们当然被发送到#fail。

处理程序中有警报:

var fn = function() {
alert("omg!");
}

表单未提交。这真是太奇怪了。

使用 event.stop(),它应该阻止浏览器采取默认操作:

var fn = function(event) {
event.stop();
}

我们被发送到#fail。

因此 alert() 在阻止提交方面比 event.stop() 更有效。给了什么?

我使用的是 Firefox 3.6.3 和 Prototype 1.6.0.3。此行为也出现在 Prototype 1.6.1 中。

最佳答案

您无法使用 Event.stop(event) 停止表单提交的原因是因为您正在观察的事件是 mousedown 事件,而不是 form.submit() 事件。我猜 alert() 阻止提交的原因是因为您已经覆盖了 mousedown 在输入 type="button"

上的默认行为

关于javascript - 中断原型(prototype)处理程序,alert() 与 event.stop(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2635916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com