js在瀏覽器的兼容問題及其解決方案

event事件問題

IE中有window.event,而火狐中沒有

function onclick(event){
    var e=event || window.event;
    var mouseX=e.clientX;//鼠標(biāo)X軸的坐標(biāo)
    var mouseY=e.clientY;//鼠標(biāo)Y軸的坐標(biāo)
}

獲取元素的非行間樣式值

function getstyle(obj, obj_css){
    if(obj.currentStyle){
      return obj.currentStyle[obj_css]   //ie
    }else{   
      return getComputedStyle(obj,null)[obj_css]  //除了ie
    }
}

獲取自定義屬性問題

IE下,可以使用獲取常規(guī)屬性的方法來獲取自定義屬性贴妻,也可以使用getAttribute() 獲取自定義屬性切油;Firefox下,只能使用getAttribute() 獲取自定義屬性

解決方法:統(tǒng)一用getAttribute()獲取屬性

設(shè)置監(jiān)聽事件

function addEvent(obj, type,fn){
     if(obj.addEventListener){
          obj.addEventListener(type,fn,false)  //非ie
      }else{
          obj.attachEvent("on"+type,fn)  //ie
      }
}
//解除事件綁定
function removeEvent(obj.type,fn){
      if(obj.removeEventListener){
          obj.removeEventListener(type,fn,false)  //非ie
      }else{
          obj.detachEvent("on"+type,fn)  //ie
      }
}

補(bǔ)充說明:  attachEvent只在ie9及其以下才能使用,在ie9及其以上統(tǒng)一使用了 addEventListener

阻止事件冒泡

function do(event){
    var e=event || window.event;
    if(e.stopPropagation){
        e.stopPropagation()   // 非ie
    }else{
        e.cancelBubble=true   // 從ie5到edge都要這么寫
    }
}

阻止默認(rèn)事件

function stopDefault( e ) { 
    //阻止默認(rèn)瀏覽器動(dòng)作(W3C) 
    if ( e && e.preventDefault ) 
        e.preventDefault(); 
    //IE中阻止函數(shù)器默認(rèn)動(dòng)作的方式 
    else
        window.event.returnValue = false; 
    return false; 
}

關(guān)于event事件中target問題

function do(event){
    var e=event || window.event;
    var target =e.target || e.srcElement   //后面為ie
)

補(bǔ)充說明:在ie9及其以上的時(shí)候名惩,event屬性存在,并且區(qū)別是:
event: srcElement  target cancleBuble currentTarget defaultPrevent
window.event: srcElement

鼠標(biāo)滾輪事件

  // 火狐滾輪事件
  document.addEventListener("DOMMouseScroll",function(event){
      alert(event.detail)      //前進(jìn)-3  后退 3
}澎胡,false)
 // IE滾輪事件
  document.onmousewheel=function(event){
    alert(event.detail)      //前滾:120,后滾:-120
  }

鼠標(biāo)當(dāng)前坐標(biāo)

IE:  event.offsetX 和 event.offsetY
FF:  event.layerX 和  event.layerY

事件委托

window.onload = function(){
    var oUl = document.getElementById("ul");
    var aLi = oUl.getElementsByTagName("li");
    var oBtn = document.getElementById("btn");
    var iNow = 4;

    oUl.onmouseover = function(ev){
        var ev = ev || window.event;
        var target = ev.target || ev.srcElement;
        //alert(target.innerHTML);
        if(target.nodeName.toLowerCase() == "li"){
        target.style.background = "red";
        }
    }
    oUl.onmouseout = function(ev){
        var ev = ev || window.event;
        var target = ev.target || ev.srcElement;
        //alert(target.innerHTML);
        if(target.nodeName.toLowerCase() == "li"){
        target.style.background = "";
        }
    }
    oBtn.onclick = function(){
        iNow ++;
        var oLi = document.createElement("li");
        oLi.innerHTML = 1111 *iNow;
        oUl.appendChild(oLi);
    }
}

窗體寬高

var winW=document.body.clientWidth || document.ducumentElement.clientHeight  
//以上為不包括邊框的寬高娩鹉,如果是offsetWidth或者offsetHeight的話包括邊框

var winWW=document.body.scrollWidth||document.docuemntElement.scrollWidth;
//整個(gè)網(wǎng)頁的寬度

  var screenH=window.screen.height;//屏幕分辨率的高
  var screenW=window.screen.width;//屏幕分辨率的寬
  var screenX=window.screenLeft;//瀏覽器窗口相對(duì)于屏幕的x坐標(biāo)(除了FireFox)
  var screenXX=window.screenX;//FireFox相對(duì)于屏幕的X坐標(biāo)
  var screenY=window.screenTop;//瀏覽器窗口相對(duì)于屏幕的y坐標(biāo)(除了FireFox)
  var screenYY=window.screenY;//FireFox相對(duì)于屏幕的y坐標(biāo)

一圖解析

獲取元素的非行間樣式值

//獲取元素的非行間樣式值
   function getStyle(object,oCss) {
       if (object.currentStyle) {
         return object.currentStyle[oCss];//IE
       }else{
         return getComputedStyle(object,null)[oCss];//除了IE
       }
   }

元素到瀏覽器邊緣的距離

//在這里加個(gè)元素到瀏覽器邊緣的距離攻谁,很實(shí)用
  function offsetTL(obj){//獲取元素內(nèi)容距離瀏覽器邊框的距離(含邊框)
    var ofL=0,ofT=0;
    while(obj){
      ofL+=obj.offsetLeft+obj.clientLeft;
      ofT+=obj.offsetTop+obj.clientTop;
      obj=obj.offsetParent;
    }
    return{left:ofL,top:ofT};
  }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市弯予,隨后出現(xiàn)的幾起案子戚宦,更是在濱河造成了極大的恐慌,老刑警劉巖锈嫩,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件受楼,死亡現(xiàn)場(chǎng)離奇詭異垦搬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)艳汽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門猴贰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人河狐,你說我怎么就攤上這事米绕。” “怎么了馋艺?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵栅干,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我丈钙,道長(zhǎng)非驮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任雏赦,我火速辦了婚禮劫笙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘星岗。我一直安慰自己填大,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布俏橘。 她就那樣靜靜地躺著允华,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寥掐。 梳的紋絲不亂的頭發(fā)上靴寂,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音召耘,去河邊找鬼百炬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛污它,可吹牛的內(nèi)容都是我干的剖踊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼衫贬,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼德澈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起固惯,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤梆造,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后缝呕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澳窑,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斧散,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摊聋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸡捐。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖麻裁,靈堂內(nèi)的尸體忽然破棺而出箍镜,到底是詐尸還是另有隱情,我是刑警寧澤煎源,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布色迂,位于F島的核電站,受9級(jí)特大地震影響手销,放射性物質(zhì)發(fā)生泄漏歇僧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一锋拖、第九天 我趴在偏房一處隱蔽的房頂上張望诈悍。 院中可真熱鬧,春花似錦兽埃、人聲如沸侥钳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舷夺。三九已至,卻和暖如春售貌,著一層夾襖步出監(jiān)牢的瞬間给猾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工颂跨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耙册,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓毫捣,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親帝际。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蔓同,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容