1

私たちは、かなり複雑な UI コントロール (実際にはデータグリッド) を構築しており、ユーザーがグリッドをスクロールすると、DOM ツリーからノードを動的に追加/削除しています (できるだけ高いパフォーマンスでそれを実行しようとしています)。

IE9 と IE10 で、ノードに子要素を追加/削除すると、keydown イベントの発生が停止することに気付きました。

このフィドルを参照してください: http://jsfiddle.net/T2Lt8/13/

たった 2 回のキーダウン イベントの後、親が起動を停止することがわかります。ただし、$(child).focus()キーダウンハンドラーの行のコメントを外すと、すべて機能します。

何が起こっているのですか? これはこの問題を回避するための最善のハックですか?

4

1 に答える 1

0

しばらく例を試してみたところ、次のことがわかりました。

  1. 追加child.style.border = "1px solid red";すると、最初の子が削除されないため、2 番目の子が作成されることがわかります。これは、parent に空白があるためです。

  2. 子供は親より大きいです。親を 150px x 150px にして、子ではなく親をクリックするだけで、キー イベントが正しく繰り返し機能します。IE9はバインディングを保持しているようです。

  3. 子が のような「不透明」なものである場合、textareaFirefox は IE9 で見た動作のように動作するようです。

于 2012-09-05T02:47:00.450 に答える