javascript - IE 中的事件传播

标签 javascript

在一个简单的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/

相关文章:

javascript - 检查单击时正在使用哪个光标的简单方法?

javascript - 在函数内按时间间隔触发函数(coffeescript)

javascript - 何时不使用 promise

javascript - textarea.val() 设置和获取

javascript - 尝试显示 Web api 服务数据时出现空白页面

javascript - Google 标记动画更改

javascript - innerhtml 的奇怪 firefox 问题

javascript - 初始化 DIV 中的按钮元素

javascript - 元素轮播 Bootstrap

javascript - 使用 jquery 解析 url 查询字符串并将值插入到文本框中?