【问题标题】:event propagation in IEIE 中的事件传播
【发布时间】:2015-09-30 12:38:53
【问题描述】:

在一个简单的 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”。但我没有在任何地方的代码中使用它。有没有其他可能达到同样的效果。

【问题讨论】:

  • 您已经回答了自己的问题,因为您已经证明此代码有效,因此它必须是项目中其他地方的某些代码阻止它。不看代码,很难说。
  • 我完全同意你的看法。我的疑问是实现这种情况的可能方法是什么。 IE。停止事件传播。我知道的一种可能性是“stopPropagation”。但我没有在任何地方的代码中使用它。

标签: javascript


【解决方案1】:

这些事件没有被传播。它们是两个独立的事件。

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

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

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

【讨论】:

  • 如果您知道的话,您能否简要介绍一下可能的定制以实现它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-22
  • 1970-01-01
  • 2017-07-05
相关资源
最近更新 更多