javascriptによくある互換性の問題と解決方法のまとめ

16859 ワード

1.現在のページの幅と高さを取得する
window.innerWidth?window.innerWidth:document.documentElement.clientWidth;
window.innerHeight?window.innerHeight:document.documentElement.clientHeight;
2.スクロールバーの端からの距離を取得する
var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
3.スクロールバーから左の距離を取得する
var scrollTop=document.documentElement.scrollLeft||document.body.scrollLeft;
4.byClass Nameを通じてページ要素の互換性を取得する
//  :         ,     ,  byTagName  ,         ,     className   
function byClassName(obj,className){
		if(obj.getElementsByClassName){
			return obj.getElementsByClassName(className);
		}
		else{
			var arr=[];
			var eles=obj.getElementsByTagName('*');
			for(var i=0,len=eles.length;i<len;i++){
				if(eles[i].className==className){
					arr.push(eles[i]);
				}
			}
			return arr;
		}
	}
		//  :
	var oDivClass=byClassName(document,'pox')[0];
		alert(oDivClass);
5.ノードオブジェクトのクラス属性の互換性を取得する
function getAttributeFromClass(obj,className){
		return obj.getAttribute('class')==null ? obj.getAttribute('className') : obj.getAttribute('class');
	}
6.行以外のスタイルの互換性を取得する
function getStyle(obj,attr){
	return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj,1)[attr];
}
7.イベントオブジェクトの符号化値を取得する
oBox.onclick=function(evt){
	var e=evt||window.event;
}
8.マウスボタンの符号化値を取得する
function getButton(evt){
	var e=evt||window.event;
	if(evt){
		return e.button;
	}else if(window.event){
		switch(e.button){
			case 1:return 0;
			case 4:return 1;
			case 2:return 2;
		}
	}
}
9.キーボードキーの符号化値を取得する
//onkeydown onkeyup  
var code=event.keyCode||event.which;
//onkeypress  
var code=event.keyCode||event.which||charCode
10.イベントソースの取得
var target=e.target||e.srcElement;
11.事件のバブルを防ぐ
var e=eve||window.event;
e.stopPropagation?e.stopPropagation():e.cancelBubble=true;
12.ブラウザのデフォルトの挙動の互換性を阻止する(フォームの提出、ハイパーリンク、右クリックメニュー)
function stopDefault(eve){
	var e=eve||window.event;
	e.preventDefault?e.preventDefault():e.returnValue=false;
}
13.事件傍受
function addEventListener(obj,event,fn,boo){
	if( addEventListener){
		obj.addEventListener(event,fn,boo)
	}else if(attachEvent){
		obj.attachEvent('on'+event,fn);
	}else{
		obj['on'+event]=fn;
	}
}
14.イベントの傍受を削除する
function removeEventListener(obj,event,fn,boo){
	if( removeEventListener){
		obj.removeEventListener(event,fn,boo)
	}else if(detachEvent){
		obj.detachEvent('on'+event,fn);
	}else{
		obj['on'+event]=null;//    ,             
	}
}