Blog.Ks-Product.com

初音ミクの消失PV(特別編集版)が初音ミクVISION(DVD)に収録されます!詳しくはこちら! 設定不要!プリロード機能付きロールオーバープラグイン jquery.automaticRollover 有名動画サイトの動画の埋め込みが簡単に行える! jquery.createvideo

addEventListener と attachEvent の振る舞いを同じにしたはいいが・・・

 

addEventListener と attachEvent はイベント発生時に実行する関数を設定するためのメソッドですが、色々と問題点があるようで挫折・・・。
とりあえずベーシックなものを紹介。


//elemをクリックした際にfuncを実行する場合の例
elem.attachEvent("onclick",func); //IEの場合
elem.addEventListener("click",func,false); //IE以外の場合

上記はほぼ同じ振る舞いをしますが、func内部でのthis参照がIEは「window」、IE以外は「クリックされた要素」と異なります。この問題を解決するために下記の手順を踏みます。


elem.attachEvent("onclick",function(e){ func.call(elem,e); });//callメソッドでthis参照をelemに設定
elem.addEventListener("click",func,false); 

これで、addEventListener と attachEvent の挙動は同じなりました(細かい違いはありますが)。

しかし、ここで問題が・・・。
イベントリスナーの削除ができません。
IE以外はremoveEventListenerで削除可能ですが、IEはイベントリスナーの登録に無名関数を使用しているので削除することができません。
まぁ、つまり詰んだということです\(^o^)/オワタ

やっぱこの辺はライブラリに任せるべきなのかなぁ。

コメント(0)

コメントが存在しません。

コメントを投稿する

※投稿されたコメントは管理人が承認するまで反映されません。
またHTMLタグはご利用できません。コメント上にHTMLタグを表示させたい場合は全角でご入力ください。

お名前
URL
コメント
名前:
kakeru ( twitter
職業:
フロントエンドエンジニア
生年月日:
1983年4月19日

HTML、CSS、JavaScript、ActionScript、デザイン、映像制作(After Effects、CINEMA 4D)で遊んでます。
最近はjQueryを使ったプログラミングに色んな意味ではまってます。ライブラリ作ってます。

好きなK-POPはf(x)、Brown eyed girls、4minute、B2ST、2PM、KARA、SNSD、Sunny hillということで、K-POPの話題を中心に発信中!

お問い合わせはこちらからどうぞ。
kakeru[at]ks-product.com
([at]を@に置き換えてください)