IE中的事件传播

时间:2015-09-30 12:38:54

标签: 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>   

当我按下&#34; ENTER&#34; (重点关注li元素),首先是&#34; kd&#34;弹出,然后&#34; kp&#34;弹出窗口。从这里我推断通常onKeyDown()首先执行,然后是onKeyPress()。这意味着从按键到按键的事件传播正常发生。

但是在我的项目中,对于相同的代码,这种流程并没有发生。流程以&#34; kd&#34;。

停止

使用onKeyDown()停止事件传播并且不转移到onKeyPress()

的原因可能是什么?

我怀疑可能是实现这种情况的可能方法。即。停止事件传播。我知道的一种可能性是&#34; stopPropagation&#34;。但我还没有在我的代码中使用它。是否有其他可能实现同样的目标。

1 个答案:

答案 0 :(得分:1)

这些事件尚未传播。它们是两个分开的事件。

keyPress是一个事件,keyDown是另一个事件。

您无法停止从keyPress事件传播keyDown(没有带有标记或其他内容的自定义代码)。

事件传播从子元素发生到父元素。不是从一个eventType到另一个eventType。