inamenaiの日記 RSSフィード

2008年09月15日

IEのイベント実行順序は不定?

IEのattachEventの実行順序

一番最後に追加されたイベントから一番最初に追加されたイベントにさかのぼるように実行される。

なので上記のコードでは2→1

addEventListenerとattachEventでは実行される順番が違う at HouseTect, JavaScriptな情報をあなたに

これ、イベントが3件以上登録されていると、逆順でもないようです(10件登録して実行すると、3→2→4→6→8→10→9→7→5→1 になる)。何度リロードしても同じ順番なので何らかの法則性はあるみたいですが、どういう規則なのかよくわかりません…。ちなみに、prototype.jsを使わずに直接attachEvent()を書いた場合は、2→3→5→7→9→10→8→6→4→1 とまた違う順番になってますます意味不明。

これ、外部ライブラリとかユーザスクリプトを使うときに、ページ本来のスクリプトが終了後に新しいイベントが追加されることを保証したい場合とかはどうすればいいんでしょうね…。

language_and_engineelanguage_and_enginee 2008/10/11 08:36 興味深い情報をありがとうございました。記事を書く際,参考にさせて頂きました。

拙筆ですが,IEでのリスナ実行順序を調べるかんたんなテストコードと,正常な順序で実行させるための応急処置法を考えてみました。
http://d.hatena.ne.jp/language_and_engineering/20081011/1223680300

inamenaiinamenai 2008/10/14 22:45 id:language_and_engineering さん
コメントありがとうございます。サイト、拝見しました。
なるほど、手製の関数を用意して実行順序の管理までもう全部こちら側でやってやるわけですね。これなら確かに順序をコントロールできますね。
何とかもう少し手軽に(できれば既存のコードには手を加えず)新しいイベントを追加して最後に実行させることができるといいんですけどね…。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証