我有一个按钮和以下 javascript 例程。
$("button").keydown( function(key) {
switch(key.keyCode) {
case 32: //space
return false;
}
} );
据我了解,return false;
将停止处理按键。所以$("button").click();
不会被调用。对于其他 keyCodes,这按预期工作。例如,如果我拦截40
,即向下按钮,页面不滚动。
我在 Firefox 中注意到了这种行为。
为什么return false;
不停止空间上的按钮点击事件吗? javascript 规范对此有何规定?
希望这能回答您的问题:
<input type="button" value="Press" onkeydown="doOtherStuff(); return false;">
return false;
如果在 HTML 中的事件处理程序属性末尾调用,则可以成功取消跨浏览器的事件。据我所知,这种行为在任何地方都没有正式指定。
如果您通过 DOM 元素上的事件处理程序属性设置事件(例如button.onkeydown = function(evt) {...}
)或使用addEventListener
/attachEvent
(e.g. button.addEventListener("keydown", function(evt) {...}, false)
)然后就返回false
该功能并不适用于每个浏览器,您需要执行以下操作returnValue
and preventDefault()
我的其他答案中的东西。preventDefault
指定在DOM 2 规范 http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-cancelation并被大多数主流现代浏览器所实现。returnValue
是 IE 特定的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)