IE9-添加和删除DOM元素会破坏父keydown事件
IE9 - adding and removing DOM element breaks parent keydown event
我们正在构建一个相当复杂的UI控件(实际上是一个数据网格),并在用户滚动网格时动态地从DOM树中添加/删除节点(并试图以尽可能高的性能来完成)。
我们在IE9&IE10,当我们从节点添加/删除子元素时,它会停止触发其keydown事件:
看看这把小提琴:http://jsfiddle.net/T2Lt8/13/
您可以看到,仅在两个左右的keydown事件之后,父对象就停止了激发。但是,如果我在keydown处理程序中取消对$(child).focus()
行的注释,那么一切都可以。
发生了什么,这是解决这个问题的最佳方法吗?
玩了一段时间后,我发现了以下内容:
-
如果添加
child.style.border = "1px solid red";
,则会看到创建了第二个子项,因为第一个子项没有删除。这是由于父级中存在空白。 -
孩子比父母大。如果您将父项设置为150px乘以150px,然后只单击父项而不是子项,那么关键事件将正确且重复地工作。看来IE9确实保持了约束力。
-
如果孩子是像
textarea
这样的"不透明"的东西,这似乎会使Firefox的行为与我们在IE9中看到的行为类似。
相关文章:
- 阻止浏览器对keydown事件作出反应,但不取消该事件
- IE9-添加和删除DOM元素会破坏父keydown事件
- 在文本区域禁用javascript定义的keydown事件并恢复默认行为
- 在Chrome中模拟keydown事件
- 使用Keydown事件移动对象
- 如何在不干扰网站其他部分的情况下,在画布上捕捉keydown事件
- HTML jQuery 函数在 Keydown 事件上不起作用
- 输入字段未使用 ng-keydown 事件更新
- angularjs的ng keydown事件,按下哪个键的值,然后显示按下的键的值
- background.js正在捕获textbox的keydown事件
- 当我更新HTML时,Keydown事件停止触发
- 为什么我的引导工具提示的标题只会随着jQuery中的keydown事件而更改一次
- 使用AngularJS对超快速keyup和keydown事件调用函数
- d3:拦截特定元素上的keydown事件
- Javascript ActiveElement和Keydown事件侦听器
- 在Firefox中的keydown事件中隐藏元素时焦点顺序错误
- Javascript 'keydown' 事件侦听器不起作用
- 同时在 JavaScript 中使用 keyup/keydown 事件
- 如何使用 Keydown 事件在多种语言/键盘布局中获取正确的字符
- 触发警报的JS(Jquery).keydown事件