在一个简单的HTML页面中,对于下面的代码,
<ul>
<li id='testlist' style='border: 1px solid #2E2E2E;width:100px;height:100px;' onkeydown= "alert('kd');" onkeypress="alert('kp');" tabindex='0'>
Click me
</li>
</ul>
当我按“ENTER”(焦点在 li 元素上)时,首先弹出“kd”,然后弹出“kp”。由此我推断通常 onKeyDown() 首先执行,然后是 onKeyPress()。这意味着从按键到按键的事件传播正常发生。
但是在我的项目中,对于相同的代码,这个流程并没有发生。流程以“kd”停止。
事件传播因 onKeyDown() 而停止而不移动到 onKeyPress() 的可能原因是什么
我怀疑实现这种情况的可能方法是什么。 IE。停止事件传播。我知道的一种可能性是“stopPropagation”。但是我没有在我的代码中的任何地方使用它。有没有其他可能实现同样的目标。
最佳答案
这些事件没有被传播。它们是两个独立的事件。
keyPress
是一个事件,keyDown
是另一个事件。
您无法停止从 keyDown
事件传播 keyPress
(没有带有标志或其他内容的自定义代码)。
事件从子元素传播到父元素。不是从一个事件类型到另一个事件类型。
关于javascript - IE 中的事件传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32866341/