 「addEventListener」
「addEventListener」を書いてonclickなどにイベント処理を追加するのは、かなり便利だが、IEに対応するためには、分岐処理が必要になる。
なぜならIEは
「attatcheEvent」って書かないといけないから。
なんという不憫なブラウザだ!
概要
下記コードにより、どんなブラウザでも対応可能なイベント追加処理が行える。
仕様
param @ t : イベントを追加する対象のエレメント(windowも可)
param @ m : on***というイベントのonを削ったモノを書く(click,mouseover,load...)
param @ f : functionを記述できる。※無名関数で書くとより良い
コード
(function(){
	
	var $$={};
	
	$$.event = {
		add:function(t, m, f){
			
			//other Browser
			if (t.addEventListener){
				t.addEventListener(m, f, false);
			}
			
			//IE
			else{
				if(m=='load'){
					var d = document.body;
					if(typeof(d)!='undefined'){d = window;}
					
					if((typeof(onload)!='undefined' && typeof(d.onload)!='undefined' && onload == d.onload) || typeof(eval(onload))=='object'){
						t.attachEvent('on' + m, function() { f.call(t , window.event); });
					}
					else{
						f.call(t, window.event);
					}
				}
				else{
					t.attachEvent('on' + m, function() { f.call(t , window.event); });
				}
			}
		}
	};
	
	return $$;
})(); 
使い方
//ページ起動時にアラート表示
$$LIB.event.add(window,"load",function(){alert("読み込み完了)});
//特定のボタンを押した時にアラート
$$LIB.event.add(document.getElementById("hoge"),"click",function(){alert("hoge-click")}); 
 
0 件のコメント:
コメントを投稿