1

如果您为特定preventDefault()的事件调用事件,默认会被阻止多长时间?它是在浏览器会话期间还是仅在加载特定页面时?行为是否相同?keypresskeyCodestopPropagation()

一些示例代码:

<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>
4

3 回答 3

1

它永久阻止了该特定事件的特定实例。

如果一个键被第二次按下,这将调用该keypress事件的第二个实例,因此它的默认事件不会因为第一个事件被阻止而被阻止。

于 2012-09-12T13:10:12.083 回答
1

preventDefault()防止发生默认操作,即在form按下回车时浏览器发布。对于此事件实例,此默认操作将被永久阻止。下次enter按下时,您需要阻止该键按下。

stopPropagation()阻止事件冒泡到发生事件的元素上方的所有元素,即:

<div>
    <a></a>
</div>

如果您单击<a>div 的 -tag 直到也得到一个冒泡的click- 事件。stopPropagation()将防止这种情况。

编辑:在您的情况下,每个带有keyCode== VK_BACKor的事件461都将被阻止进行默认操作。

于 2012-09-12T13:14:31.047 回答
0

preventDefault 在传递给处理函数的事件实例上运行,因此如果您有两个输入具有两个不同的“更改”事件处理程序,如果一个具有 preventDefault,它们都不会被停止。

stopPropagation 与它对传递给处理程序的事件的操作完全相同。

于 2012-09-12T13:14:07.663 回答