event.prventDefault()持续多久

How long does event.preventDefault() last?

本文关键字:prventDefault event      更新时间:2023-09-26

如果您在特定keyCodekeypress事件上调用preventDefault(),默认情况会被阻止多久?它是在浏览器会话的生命周期内使用,还是仅在加载特定页面时使用?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>

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

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

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

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

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

对于该特定事件的特定实例,它被永久阻止。

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

preventDefault是在传递给处理程序函数的事件实例上操作的,因此,如果您有两个具有两个不同"更改"事件处理程序的输入,那么如果其中一个具有preventDefault,它们将不会同时停止。

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