国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

存在不同瀏覽器間的JS兼容總結(jié)

Benedict Evans / 563人閱讀

摘要:年月日個(gè)人博客文章遷移到當(dāng)我們?cè)诰帉?xiě)用于處理事件時(shí),由于考慮到不同瀏覽器間代碼兼容不同,代碼不易記憶于是做出如下整理。示例代碼如下阻止默認(rèn)事件標(biāo)準(zhǔn)兼容小提示也能阻止默認(rèn)事件但是要注意位置。

2016年2月19日個(gè)人博客文章--遷移到segmentfault

當(dāng)我們?cè)诰帉?xiě)JS用于處理事件時(shí),由于考慮到不同瀏覽器間Js代碼兼容不同,代碼不易記憶,于是做出如下整理。(當(dāng)然以后還會(huì)增加更新的。。。)

示例代碼如下:

(1)阻止默認(rèn)事件

obj.onclick=function(ev){
        var event=ev||window.event;
        if(event.preventDefault){
            event.preventDefault();  /*W3C標(biāo)準(zhǔn)*/
        }else{
            event.returnValue=false;   /*兼容IE*/
        }
     }

小提示:return false; 也能阻止默認(rèn)事件 但是要注意位置。

(2)獲取下(上)一個(gè)兄弟節(jié)點(diǎn)

function nextnode(obj){  /*獲取下一個(gè)兄弟節(jié)點(diǎn)*/
        if (obj.nextElementSibling) {
            return obj.nextElementSibling;
        } else{
            return obj.nextSibling;
        }
    }
function prenode(obj){ /*獲取上一個(gè)兄弟節(jié)點(diǎn)*/
 
        if (obj.previousElementSibling) {
            return obj.previousElementSibling;
        } else{
            return obj.previousSibling;
        }
    }

(3)獲取第一個(gè)子(最后一個(gè))節(jié)點(diǎn)

function firstnode(obj){/*獲取第一個(gè)子節(jié)點(diǎn)*/
        if (obj.firstElementChild) {
            return obj.firstElementChild;/*非IE678支持*/
        } else{
            return obj.firstChild;/*IE678支持*/
        }
    }
    function lastnode(obj){/*獲取最后一個(gè)子節(jié)點(diǎn)*/
        if (obj.lastElementChild) {
            return obj.lastElementChild;/*非IE678支持*/
        } else{
            return obj.lastChild;/*IE678支持*/
        }
    }

(4)添加(移除)事件監(jiān)聽(tīng)

function addEvent(obj,type,fn){ /*添加事件*/
        if(obj.addEventListener){
            obj.addEventListener(type,fn,false); //非IE添加事件監(jiān)聽(tīng)
        }else{
            obj.attachEvent("on"+type,fn); //IE添加事件綁定
            stopEvent();
        }
    }
   function removeEvent(obj,type,fn){ //移除事件
        if(obj.removeEventListener){
            obj.removeEventListener(type,fn,false); //非IE移除事件,移除事件,第三個(gè)參數(shù)必須是函數(shù)名
        }else{
            obj.detachEvent("on"+type,fn); //IE移除事件
        }
    }

(5)舉例click事件阻止事件傳播

obj.onclick=function(ev){
            var event=ev||window.event;
            alert("aa");
            if(event.stopPropagation){
                event.stopPropagation(); //非IE阻止事件傳播
            }else{
                event.cancelBubble=true; //IE阻止事件傳播
            }
     }

(6)mouseover與mouseover的事件委托(經(jīng)常用到,用于去除當(dāng) 鼠標(biāo)浮動(dòng)到元素容器中不同子元素間出現(xiàn)閃動(dòng)問(wèn)題。只需在函數(shù)function(ev){} 頭部添加以下代碼即可)

// mouseover委托事件
    var event=ev||window.event;
    // var from=event.fromElement||event.relatedTarget;
    //在mouseover事件中from,表示鼠標(biāo)來(lái)自哪個(gè)元素,也是事件委托類(lèi)型,和target與srcElement相反
    // alert(from);
    var from=event.fromElement||event.relatedTarget;
    while(from){
        if (this==from) {
            return false;
        };
        from=from.parentNode;
    }
    //mouseout委托事件
    var event=ev||window.event;
        var to=event.toElement||event.relatedTarget;
        //在mouseout事件中to,表示鼠標(biāo)指向那個(gè)元素,也是事件委托類(lèi)型,和target與srcElement相反
        // alert(to)
        while(to){
            if (this==to) {
                return false;
            };
            to=to.parentNode;
        }

(7)滾輪事件

box.onmousewheel=function (ev){
     var event=ev||window.event;
     // box.innerHTML="鼠標(biāo)滾動(dòng)"+event.wheelDelta;
     if (event.wheelDelta>0) {
     alert("鼠標(biāo)前滾");//非火狐 前滾120
     } else{
     alert("鼠標(biāo)后滾")//非火狐 后滾-120
     };
     }*/
    box.addEventListener("DOMMouseScroll",function (ev){
     var event=ev||window.event;
     alert(event.detail);//火狐前滾:-3 ,后滾:3
     },false)//IE678不支持

8.js按需加載 異步加載
demo.js如下

function test() {
    console.log("hello");
}

index.html如下

  function loadScript(url,callback){
        var script=document.createElement("script");
        script.type="text/javascript";
        if(script.readyState){ //ie
            script.onreadystatechange=function(){
                if(script.readyState=="complete"||script.readyState=="loaded"){
                    callback()
                }
            }
        }else{
            script.onload=function(){ //Safari chrome firefox opera ----Ie script不具備onload方法
                callback();
            }
        }
        script.src=url;  //寫(xiě)在這里是為了防止onreadystatechange狀態(tài)不改變
        document.head.appendChild(script)
    }
    loadScript("demo.js",function(){test()})

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/52052.html

相關(guān)文章

  • 存在不同覽器間的JS兼容總結(jié)

    摘要:年月日個(gè)人博客文章遷移到當(dāng)我們?cè)诰帉?xiě)用于處理事件時(shí),由于考慮到不同瀏覽器間代碼兼容不同,代碼不易記憶于是做出如下整理。示例代碼如下阻止默認(rèn)事件標(biāo)準(zhǔn)兼容小提示也能阻止默認(rèn)事件但是要注意位置。 2016年2月19日個(gè)人博客文章--遷移到segmentfault 當(dāng)我們?cè)诰帉?xiě)JS用于處理事件時(shí),由于考慮到不同瀏覽器間Js代碼兼容不同,代碼不易記憶,于是做出如下整理。(當(dāng)然以后還會(huì)增加更新的。...

    shmily 評(píng)論0 收藏0
  • 一篇文章讓你學(xué)會(huì)如何選擇 JS HTTP 請(qǐng)求庫(kù)

    摘要:本文將帶你了解不同請(qǐng)求的原理,以及如何為項(xiàng)目選擇合適的請(qǐng)求庫(kù)。小程序年微信小程序上線,隨后各大平臺(tái)都推出自己的小程序。下面為目前較火的請(qǐng)求庫(kù)。支持微信小程序和瀏覽器是一個(gè)基于的請(qǐng)求庫(kù),可以用在微信小程序和瀏覽器中,對(duì)上述平臺(tái)都做了兼容。 以前前端提到網(wǎng)絡(luò)請(qǐng)求通常是指瀏覽器,但現(xiàn)在隨著 Node.js、小程序的出現(xiàn),網(wǎng)絡(luò)請(qǐng)求不再局限于瀏覽器。本文將帶你了解不同請(qǐng)求的原理,以及如何為項(xiàng)目選...

    Render 評(píng)論0 收藏0
  • 前端跨域總結(jié)

    摘要:通過(guò)跨域通過(guò)引入的不受同源策略的限制,所以我們可以通過(guò)標(biāo)簽引入一個(gè)或者是一個(gè)其他后綴形式如,等的文件,此文件返回一個(gè)函數(shù)的調(diào)用。 1.跨域的定義 只要協(xié)議、域名、端口有任何一個(gè)不同,就會(huì)被當(dāng)做為不同的域,如果從A域名訪問(wèn)B域名上的資源就叫做跨域。 下面我們來(lái)看下幾種跨域的方法: 2.document.domain 瀏覽器的同源策略有一些限制,第一,不能通過(guò)ajax方法去請(qǐng)求不同源的資源...

    Yang_River 評(píng)論0 收藏0
  • 前端跨域總結(jié)

    摘要:通過(guò)跨域通過(guò)引入的不受同源策略的限制,所以我們可以通過(guò)標(biāo)簽引入一個(gè)或者是一個(gè)其他后綴形式如,等的文件,此文件返回一個(gè)函數(shù)的調(diào)用。 1.跨域的定義 只要協(xié)議、域名、端口有任何一個(gè)不同,就會(huì)被當(dāng)做為不同的域,如果從A域名訪問(wèn)B域名上的資源就叫做跨域。 下面我們來(lái)看下幾種跨域的方法: 2.document.domain 瀏覽器的同源策略有一些限制,第一,不能通過(guò)ajax方法去請(qǐng)求不同源的資源...

    honmaple 評(píng)論0 收藏0
  • 前端跨域總結(jié)

    摘要:通過(guò)跨域通過(guò)引入的不受同源策略的限制,所以我們可以通過(guò)標(biāo)簽引入一個(gè)或者是一個(gè)其他后綴形式如,等的文件,此文件返回一個(gè)函數(shù)的調(diào)用。 1.跨域的定義 只要協(xié)議、域名、端口有任何一個(gè)不同,就會(huì)被當(dāng)做為不同的域,如果從A域名訪問(wèn)B域名上的資源就叫做跨域。 下面我們來(lái)看下幾種跨域的方法: 2.document.domain 瀏覽器的同源策略有一些限制,第一,不能通過(guò)ajax方法去請(qǐng)求不同源的資源...

    caiyongji 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<