js在IE和Firefox下的一些區別

來源:互聯網
上載者:User

最好都是能使用w3c的標準l來進行代碼編寫
<!-- 這是ie方法 -->
<script defer type="text/javascript">
    subDate();
</script>
<script type="text/javascript">
    // 這是ff方法
    if (document.addEventListener)
        document.addEventListener("DOMContentLoaded", function(){subDate();}, null);    
</script>
也可以:
<script type="text/javascript">
if (document.addEventListener)
   document.addEventListener("DOMContentLoaded", function(){choose();}, null);
else
window.onload = choose;
</script>
這是ie 和ff 頁面載入完後執行的事件

innerText在ff裡沒有這個屬性,對應的屬性是textContent
下面是判斷是否是IE
if(navigator.appName.indexOf("Explorer") > -1)
        document.getElementById("xx").innerText = "xxxxxx";
else
         document.getElementById("xx").textContent = "xxxxxx";
用innerHTML可以相容
1、用id或者name來命名網頁元素,用document.getElementByIdx或document.getElementsByName來擷取元素對象,但是建議用id,因為在IE中document.getElementsByName("test")擷取的是id="test"的對象。
2、對於document.all,看有的建議用document.all來解決,不過這個依然在FF中報錯,最好還是用上述方法。
3、innerText只存在於IE中,用innerHTML代替
4、IE中事件對象event,FF中evnt
     1) 擷取觸發事件作用對象IE中用event.srcElement,FF中用event.target
     但是event在FF中只能在事件的發生現在使用,所以一般通過event參數來解決這個問題
     例如< input onclick="getEvent(event)"    ... />
     < script type="text/javscript">
     function getEvent(event){
          var obj=event.srcElement?event.srcElement:event.target
     }
    < /script >  
     2)event.x&event.y只存在於IE中,而相等效的event.pageX,event.pageY只存在於FF中,解決方案有兩種
        a,用event.clientX&event.cilentY來代替,在有捲軸時與上面有一點區別,但是絕大多數情況下兩者一直。
        b,event.x?event.x:event.pageX ,event.y?event.y:event.pageY來實現
5、document.formName.item("itemName")只能在IE中運行不能在FF中運行,所以,用document.formName.elements["elmentName"]    
     IE中可以用()來包含集合類對象的名字來擷取對象,FF不可以,需要用[]代替
     document.forms("formName") 改成 document.forms["fromName"]
     document.getElementByIdx("id")(sum) 改成 document.getElementByIdx("id")[sum]
6、childNodes在FF&IE中的區別:   test
    在IE中nav 的childNodes=2,且childNodes[0].nodue=test
    在FF中nav的childNodes=3,且childNodes[1].nodue=test
7、依據參數擷取form對象
     要想擷取form的對象不能下面這種方式獲得:
     function test(formName){document.formName.inputName.value="test"}
     而是這樣獲得
     function test(formName){document.forms[formName].elements["inputName"].value="test"}
8、用setAttribute加事件屬性
     IE:document.getElementByIdx("test").setAttribute("onclick",function(){alert("test")})
     FF:document.getElementByIdx("test").setAttribute("onclick","alert(/"test/")")
9、sibling
     FF中用nextSiling、previousSiling、parentNode.lastChild等擷取相鄰的標籤對象,兩個相鄰的標籤之間不能有空隙或者換行,IE中某些情況下可以比如parent.nextSibling;某些情況下不可以,比如nextSibling,所以最好的方法是在利用節點樹型關係擷取標籤對象的時候,為了避免錯誤應該標籤&標籤之間沒有空格&換行。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.