麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

JavaScript的常見兼容問題及相關解決方法(chrome/IE/firefox)

2019-11-20 21:20:30
字體:
來源:轉載
供稿:網友

首先這里聲明一下,關于我測試瀏覽器的版本是chrome15.0.874.121 Firefox 8.01 IE9 IETester

下面的代碼關于聲明

1:獲得滾動條的情況

復制代碼 代碼如下:

function getScroll(){
        var t, l, w, h;

        if (document.documentElement && document.documentElement.scrollTop) {
            t = document.documentElement.scrollTop;//滾動條的頂端
            l = document.documentElement.scrollLeft;//滾動條的左端
            w = document.documentElement.scrollWidth;//滾動條的寬度,也就是頁面的寬度
            h = document.documentElement.scrollHeight;//滾動條的高度
        }
        else
            if (document.body) {
                t = document.body.scrollTop;
                l = document.body.scrollLeft;
                w = document.body.scrollWidth;
                h = document.body.scrollHeight;
            }
        return {
            t: t,
            l: l,
            w: w,
            h: h
        };
    }

2:獲得視圖瀏覽器的寬度高度
復制代碼 代碼如下:

  function getPageWidth(){
        var pageWidth = window.innerWidth;
        if (typeof pageWindth != "number") {
            if (document.compatMode == "CSS1Compat") {
                pageWidth = document.documentElement.clientWidth;
            }
            else {
                pageWidth = document.body.clientWidth;
            }
        }
        return pageWidth;
    }

    function getPageHeight(){
        var pageHeight = window.innerHeight;
        if (typeof pageWindth != "number") {
            if (document.compatMode == "CSS1Compat") {
                pageHeight = document.documentElement.clientHeight;
            }
            else {
                pageHeight = document.body.clientHeight;
            }
        }
        return pageHeight;
    }

3:獲得當前瀏覽器型號 名字
復制代碼 代碼如下:

function(){
        var Sys = {};
        var ua = navigator.userAgent.toLowerCase();
        var s;
        (s = ua.match(/msie ([/d.]+)/)) ? Sys.ie = s[1] : (s = ua.match(/firefox//([/d.]+)/)) ? Sys.firefox = s[1] : (s = ua.match(/chrome//([/d.]+)/)) ? Sys.chrome = s[1] : (s = ua.match(/opera.([/d.]+)/)) ? Sys.opera = s[1] : (s = ua.match(/version//([/d.]+).*safari/)) ? Sys.safari = s[1] : 0;

        if (Sys.ie != null) {
            return ("IE:" + Sys.ie);//判斷IE瀏覽器及版本號
        }
        if (Sys.firefox != null) {
            return ("firefox:" + Sys.firefox);//判斷firefox瀏覽器及版本號
        }
        if (Sys.chrome != null) {
            return ("chrome:" + Sys.chrome);//判斷chrome瀏覽器及版本號
        }
        if (Sys.opera != null) {
            return ("opera:" + Sys.opera);//判斷opera瀏覽器及版本號
        }
        if (Sys.safari != null) {
            return ("safari:" + Sys.safari);//判斷safari瀏覽器及版本號
        }
    }

4:事件監聽
復制代碼 代碼如下:

function(element, type, handler){
        if (element.addEventListener) {
            element.addEventListener(type, handler, false);
        }
        else
            if (element.attachEvent) {
                element.attachEvent("on" + type, handler);
            }
            else {
                element["on" + type] = handler;
            }
    }

5:事件移除
復制代碼 代碼如下:

function(element, type, handler){
        if (element.removeEventListener) {
            element.removeEventListener(type, handler, false);
        }
        else
            if (element.detachEvent) {
                element.detachEvent("on" + type, handler);
            }
            else {
                element["on" + type] = null;
            }
    }

6:獲得event,Firefox事件不斷派發的時候,第一次事件會出現問題。
復制代碼 代碼如下:

function(event){

        event = (event ? event : window.event);
        if (event == null) {
            var $E = function(){
                var c = $E.caller;
                while (c.caller)
                    c = c.caller;
                return c.arguments[0]
            };
            __defineGetter__("event", $E);
        }
        return event;
    }

7:阻止默認事件
復制代碼 代碼如下:

function(event){
        if (event.preventDefault) {
            event.preventDefault();
        }
        else {
            event.returnValue = false;
        }
    }

8:不繼續傳播事件
復制代碼 代碼如下:

function(event){
        if (event.stopPropagation) {
            event.stopPropagation();
        }
        else {
            event.cancelBubble = true;
        }
    }

9:獲得event的target
復制代碼 代碼如下:

function(event){
        return event.target || event.srcElement;
    }

10:documen.doctype支持不一致

E:如果存在文檔類型說明,會將其錯誤的解釋為一個注釋并把它當做Comment節點,document.doctype的值始終是null。

Firefox:如果存在文檔類型說明,則將其作為文檔的第一個子節點,document.doctype是一個DocumentType節點,也可以通過firstChild或者childNodes[0]訪問同一個節點。

Safari、Chrome、Opera:如果存在文檔類型說明,則將其作為解釋,但不作為文檔的子節點,不會出現在childNodes中的。

11:查找元素
我有時候,我真搞不明白,IE總是在搞什么,總是想標新立異。如果系統不讓自帶瀏覽器的話,我敢說,IE的份額將會更少。

如果id和name一樣的話,他也將被返回

復制代碼 代碼如下:

<html>
    <head>
     <script defer>
      var item=document.getElementById("my");
   item.value="SECOND";

     </script>
    </head>
    <body>
     <input type="text" name="my" value="FIRST" >
    </body>
</html>

在IE中,結果變化了。

同樣是IE,Id大小寫不區分

復制代碼 代碼如下:

<html>
    <head>
     <script defer>
      var item=document.getElementById("MY");
   item.value="SECOND";

     </script>
    </head>
    <body>
     <input type="text" id="my" value="FIRST" >
    </body>
</html>

不好意思,他的結果又變化了。

12:如果是自定義屬性的話,item.myattributs在非IE瀏覽器的情況下,是無法得出正確結果的。

復制代碼 代碼如下:

function(item,myatt){
  return item.attributes[myatt].value;
 }

同樣的話,設置屬性應該知道怎么辦吧,就是賦值唄。
復制代碼 代碼如下:

function(item,myatt,value){
  item.attributes[myatt].value=value;
 }

13:元素的子節點個數
復制代碼 代碼如下:

 <ul id="myul">
   <li>first</li>
   <li>second</li>
   <li>third</li>
  </ul>

IE結果是3,其他瀏覽器是7。

Node之間的空白符,在其他瀏覽器是文本節點,結果就是7。如果變成這樣,

復制代碼 代碼如下:

<ul id="myul"><li>first</li><li>second</li><li>third</li></ul>

這樣大家的結果都是3了。
14:創立節點問題
復制代碼 代碼如下:

//動態添加Element,所有的瀏覽器都可以實現
var newnode=document.createElement("input");
newnode.type="button";
newnode.value="sixth";
//在IE中可以還這么實現
var newnode= document.createElement("<input type=/"button/">");

15:在屏蔽右鍵的時候,firefox與其他的不一樣,在oncontextmenu事件中。

16:還有動態添加style和script的時候,IE和其他的瀏覽器是不一樣的。具體查查。

17:對于DOM2和DOM3,情況更復雜了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲一级电影在线观看 | h视频在线免费看 | 国产成人精品免费视频大全办公室 | av在线一区二区三区 | 久久久久久久.comav | 久久成人精品视频 | 久草在线观看首页 | 综合日韩欧美 | 欧美精品一区二区视频 | 久久一级 | 日韩在线欧美在线 | 久久成人综合网 | 国产亚洲综合一区二区 | 亚洲午夜一区二区三区 | 国产一级大片在线观看 | 久草在线综合 | 免费h片 | 日韩在线欧美在线 | 狠狠干天天操 | a级高清免费毛片av在线 | 成人精品| 久久成年网站 | 中国久久久 | 国产午夜精品久久久久久免费视 | 毛片午夜 | 日本一区二区久久 | 日日爱夜夜操 | 一级电影免费 | 亚洲天堂一级片 | 久久精品探花 | 欧美精品一区二区久久久 | 国产一区二区在线免费观看 | 91免费高清视频 | 天海翼四虎精品正在播放 | 国产一级性生活视频 | 亚洲国产超高清a毛毛片 | 91久久精品一 | 蝌蚪久久窝 | 精品视频一区二区三区四区 | 曰韩精品 | 99精品国产小情侣高潮露脸在线 |