Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript event.preventDefault()持续多长时间?_Javascript - Fatal编程技术网

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

Javascript event.preventDefault()持续多长时间?,javascript,Javascript,如果为特定的keyCode在keypress事件上调用preventDefault(),将阻止默认设置多长时间?它是在浏览器会话的生命周期内使用,还是仅在加载特定页面时使用?stopPropagation()的行为是否相同 一些示例代码: <script type="text/javascript"> <![CDATA[ function keydownhandler(e) { switch (e.keyCode) { case VK_

如果为特定的
keyCode
keypress
事件上调用
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>

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


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

preventDefault在传递给处理程序函数的事件实例上操作,因此如果您有两个具有两个不同“更改”的输入事件处理程序如果其中一个具有默认值,则不会同时停止它们

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

preventDefault()
防止出现默认操作,即当按下enter键时浏览器发布
表单。此事件实例将永久阻止此默认操作。下次按下
enter
时,您需要防止该键按下

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

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

如果您单击
-标记div,直到还得到一个冒泡的
单击事件<代码>停止播放()
将阻止此操作


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

我将所有按键事件绑定到一个检查keyCode值的事件处理程序,所以在这种情况下不是这样的,它仍然是该事件处理程序的一个特定实例?您使用函数的方式不会改变其行为,只要您在listener函数中调用
preventDefault
,它将被阻止。@codecowboy第二次按键确实不会因为第一次按键被阻止而被阻止。它们都可以预防,但第一个和第二个之间没有直接的因果关系(除了两者都源于同一原因的事实)。@Curt I添加了一些代码。这个问题的原因是其他开发人员在应用程序的其他地方调用了preventDefault()。问题实际上是关于这种预防将持续多长时间。对于该特定事件的每个实例,在这两种情况下,它都将被永久阻止。