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;// ,
}
}