event.preventDefault()持续多长时间?

时间:2012-09-12 13:08:15

标签: javascript

如果您针对特定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>

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

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

如果您点击<a> - 标记div,直到它还会出现冒泡click - 事件。 stopPropagation()会阻止这种情况发生。

编辑:在您的情况下,keyCode == VK_BACK461的每个活动都会被阻止进行默认操作。

答案 2 :(得分:0)

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

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