以下是我正在使用的測試頁。這個版本工作正常,轉發到#SUCCESS:中斷原型處理程序,alert()vs event.stop()
<!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中。
它看起來像攔截和停止點擊以及mousedown實際上防止默認操作。 不知道alert()的行爲如何,可能是瀏覽器問題。 – lxs 2010-04-14 12:58:23