Firefox與IE的7個JavaScript差異,Firefoxjavascript差異

來源:互聯網
上載者:User

Firefox與IE的7個JavaScript差異,Firefoxjavascript差異

     作者註:本篇文章發表於2009.04.27,是一篇關於討論Javascript在IE6、IE7和FF2+、FF3.0之間的存在的問題的文章。


     儘管需要用冗長的JavaScript代碼去識別特定的瀏覽器的曆史已經過去,但是,偶爾有必要用一段簡單的JavaScript代碼和對象檢測來確保特定的JavaScript代碼塊能夠在使用者的機器上運行。在這篇文章中,我將會從7個方面概述IE和FF在JavaScript文法上的差異。


    1、CSS的“float”屬性

          擷取給定對象的特定 CSS 屬性的基本文法是 object.style.property,有連字號的屬性要用駱駝命名法來代替,例如,擷取一個 ID 為 “header” 的 div 的 background-color 屬性,文法如下:

    document.getElementById("header").style.backgroundColor= "#ccc";  

          但是自從JavaScript將float作為保留字,我們不能用object.style.float文法來擷取該屬性。在IE和FF中,我們可以這樣做:

           IE文法:

    document.getElementById("header").style.styleFloat = "left";  

           FF文法:

    document.getElementById("header").style.cssFloat = "left";  

    2、元素的計算樣式

          通過使用上述的 object.style.property, JavaScript 可以很容易的擷取和修改對象的設定 CSS 樣式。但是這一文法的局限在於,它只能取得內聯在 HTML 裡的樣式,或者直接使用 JavaScript 設定的樣式。style 對象不能擷取使用外部樣式表設定的樣式。為了擷取對象的”計算樣式”,我們使用以下代碼:

          IE文法:

    var myObject = document.getElementById("header");      var myStyle = myObject.currentStyle.backgroundColor;  

          FF文法:

    var myObject = document.getElementById("header");      var myComputedStyle = document.defaultView.getComputedStyle(myObject, null);      var myStyle = myComputedStyle.backgroundColor;  

    3、擷取元素的class屬性

          類似於”float”屬性,IE和FF用均可以用JavaScript的getAttribute方法,但是文法略有差別:

          IE文法:

var myObject = document.getElementById("header");  var myAttribute = myObject.getAttribute("className");

          FF文法:

var myObject = document.getElementById("header");  var myAttribute = myObject.getAttribute("class"); 

          同樣的差異也適用於setAttribute方法。


     4、擷取label標籤的for屬性

           與上述類似,我們有不同的JavaScript文法來擷取label標籤的for屬性。

           IE文法:

    var myObject = document.getElementById("myLabel");      var myAttribute = myObject.getAttribute("htmlFor");  

           FF文法:

    var myObject = document.getElementById("myLabel");      var myAttribute = myObject.getAttribute("for");  

       5、擷取游標位置

             擷取元素的游標位置比較少見,如果需要這麼做,IE 和 Firefox 的文法也是不同的。這個範例程式碼是相當基礎的,一般用作許多複雜事件處理的一部分,這裡僅用來描述差異。需要注意的是,IE 中的結果和 Firefox 中是不同的,因此這個方法有些問題。通常,這個差異可以通過擷取 “滾動位置” 來補償 - 但那是另外一篇文章的課題了。

             IE文法:

    var myCursorPosition = [0, 0];      myCursorPosition[0] = event.clientX;      myCursorPosition[1] = event.clientY;  

            FF文法:

    var myCursorPosition = [0, 0];      myCursorPosition[0] = event.pageX;      myCursorPosition[1] = event.pageY;  

       6、擷取視窗或瀏覽器視窗的大小

            有時需要找出瀏覽器的有效視窗空間的尺寸,一般成為”視窗”。

            IE文法:

    var myBrowserSize = [0, 0];      myBrowserSize[0] = document.documentElement.clientWidth;      myBrowserSize[1] = document.documentElement.clientHeight;  

           FF文法:

    var myBrowserSize = [0, 0];      myBrowserSize[0] = window.innerWidth;      myBrowserSize[1] = window.innerHeight;  

      7、Alpha透明處理

            這不是JavaScript的文法問題,alpha transparency是通過css設定的。但是當對象通過 JavaScript 設定為淡入淡出時,這就需要通過擷取 CSS 的 alpha 設定,在迴圈內部來實現。要通過以下 JavaScript 來改變 CSS 代碼。

            IE文法:

    #myElement {          filter: alpha(opacity=50);      }  

           FF文法:

    #myElement {          opacity: 0.5;      }  

            為了讓JavaScript擷取這些值,需要使用style對象。

            IE文法:

    var myObject = document.getElementById("myElement");      myObject.style.filter = "alpha(opacity=80)";  

           FF文法:

    var myObject = document.getElementById("myElement");      myObject.style.opacity = "0.5";  

           當然,正如提到的,需要通過內部迴圈來修改alpha/opacity值來實現動畫效果,但這隻是一個用來說用它的工作原理的簡單例子。


        還有其他差異嗎?

        這些差異是我個人在開發或者研究中碰到的,當然還有其他方面的差異,如果你認為我遺漏了某一個重要的方面,可以留下你的評論,我會去更新這份差異列表,或者在發表一篇blog。


            原文連結:http://www.impressivewebs.com/7-javascript-differences-between-firefox-ie/#comment-624

            



ie與Firefox瀏覽器的不同是因為javascript

有一些javascript在Firefox中相容不了,此外,ie6,ie7跟ie8也不太一樣
 
有關javascript在ie與firefox中的問題

你這個代碼裡面有幾處js瀏覽器安全色問題:1. Firefox不只持document.all 方法。改為:document.getElementById或者document.getElementByName擷取當前對象 2. 在Firefox下沒有style.pixelTop和style.pixelLeft這個屬性取而代之的是style.top和style.left。但是你要注意style.left(style.top)返回的是有單位的值例如:假設單位為(px) 則擷取left 的方法為:parseInt(object.style.left, 10)
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.