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()。问题实际上是关于这种预防将持续多长时间。对于该特定事件的每个实例,在这两种情况下,它都将被永久阻止。