如果您针对特定preventDefault()
针对keypress
事件致电keyCode
,默认会被阻止多长时间?它是用于浏览器会话的生命周期还是仅在加载特定页面时? stopPropagation()
的行为是否相同?
一些示例代码:
<script type="text/javascript">
<![CDATA[
function keydownhandler(e)
{
switch (e.keyCode)
{
case VK_BACK:
case 461:
preventDefault();
break;
default:
break;
}
}
document.addEventListener("keydown", keydownhandler, true);
]]>
</script>
答案 0 :(得分:1)
它会永久阻止该特定事件的特定实例。
如果第二次按下某个键,这将调用keypress
事件的第二个实例,因此不会因为第一个事件的原因而阻止其默认事件。
答案 1 :(得分:1)
preventDefault()
阻止默认操作发生,即按下输入时浏览器发布form
。此事件实例将永久阻止此默认操作。下次enter
被按下时,您需要阻止该按键按下。
stopPropagation()
阻止事件冒泡到事件发生的元素上方的所有元素,即:
<div>
<a></a>
</div>
如果您点击<a>
- 标记div,直到它还会出现冒泡click
- 事件。 stopPropagation()
会阻止这种情况发生。
编辑:在您的情况下,keyCode
== VK_BACK
或461
的每个活动都会被阻止进行默认操作。
答案 2 :(得分:0)
对传递给处理函数的事件实例运行preventDefault,因此如果你有两个不同的“change”事件处理程序的输入,如果有一个具有preventDefault,它们都不会被停止。
stopPropagation与传递给处理程序的事件的操作完全相同。