側面に小さなボタンが付いたテーブルがあり、ユーザーのマウスが置かれている行に自動的に移動します。マウスが移動すると、insertBefore()関数を使用して、ボタンを含むスパン(およびその中のすべての要素)が移動します。ただし、ボタンには(attachEvent()を使用して)onclickイベントハンドラーが登録されており、ボタンを移動すると、onclickイベントは発生しなくなります。
これは既知の問題ですか?
側面に小さなボタンが付いたテーブルがあり、ユーザーのマウスが置かれている行に自動的に移動します。マウスが移動すると、insertBefore()関数を使用して、ボタンを含むスパン(およびその中のすべての要素)が移動します。ただし、ボタンには(attachEvent()を使用して)onclickイベントハンドラーが登録されており、ボタンを移動すると、onclickイベントは発生しなくなります。
これは既知の問題ですか?
insertBefore
、およびその他のDOM操作メソッドを使用appendChild
すると、すべてのブラウザーでイベントハンドラーが保持されるため、問題はありません。
説明されている問題を再現しようとしましたが、IE8でクリックするとバグが表示されます。ボタンは押された状態のままで、クリックハンドラーは起動しません。そのようなバグはこれまで見たことがありません。
この問題を修正するmouseenter
には、の代わりにイベントを使用できますmouseover
。(このイベントはIEに組み込まれていますが、すべての最新のブラウザーに組み込まれているわけではありません。このクロスブラウザーを作成するには、jQueryを使用できますmouseenter
)。
JSFiddleリンク(IE8で見る):バグと修正されたバージョン