js在IE瀏覽器和非IE瀏覽器中的兼容性問題

下面列出IE和非IE中常見的一些js兼容性問題。
 
//window.event  
IE:有window.event對象  
非IE:沒有window.event對象。能夠經過給函數的參數傳遞event對象。如onmousemove=doMouseMove(event)   數組

解除冒泡的方法不一樣瀏覽器

IE:window.event.cancelBubble=true;
非IE:event.stopPropagation();函數

IE:會忽略節點之間生成的空白文本節點(好比換行字符)firefox

非IE:不會忽略,會把節點之間的空白當成文本節點。orm


//鼠標當前座標  
IE:event.x和event.y。  
非IE:event.pageX和event.pageY。  
通用:二者都有event.clientX和event.clientY屬性。    
 
//event.srcElement問題  
說明:IE下,event對象有srcElement屬性,可是沒有target屬性;Firefox下,even對象有target屬性,可是沒有srcElement屬性.  
解決方法:使用obj(obj = event.srcElement ? event.srcElement : event.target;)來代替IE下的event.srcElement或者Firefox下的event.target. 請同時注意event的兼容性問題。   
 
//添加事件  
IE:element.attachEvent("onclick", function);。  
非IE:element.addEventListener("click", function, true)。  
通 用:element.onclick=function。雖然均可以使用onclick事件,可是onclick和上面兩種方法的效果是不同 的,onclick 只有執行一個過程,而attachEvent和addEventListener執行的是一個過程列表,也就是多個過程。例 如:element.attachEvent("onclick", func1);element.attachEvent("onclick", func2)這樣func1和func2都會被執行。  
 
//標籤的自定義屬性  
IE:若是給標籤div1定義了一個屬性value,能夠div1.value和div1["value"]取得該值。  
非IE:不能用div1.value和div1["value"]取。  
通用:div1.getAttribute("value")。  
 
//集合/數組類對象問題 
(1)現有問題: 
    現有代碼中許多集合類對象取用時使用 (),IE 能接受,MF 不能。 
(2)解決方法: 
    改用 [] 做爲下標運算。如:document.forms("formName") 改成 document.forms["formName"]。 
    又如:document.getElementsByName("inputName")(1) 改成 document.getElementsByName("inputName")[1] 
 
//HTML 對象的 id 做爲對象名的問題 
(1)現有問題 
     在 IE 中,HTML 對象的 ID 能夠做爲 document 的下屬對象變量名直接使用。在 MF 中不能。 
(2)解決方法 
     用 getElementById("idName") 代替 idName 做爲對象變量使用 
 
//input.type屬性問題  
說明:IE下input.type屬性爲只讀;可是Firefox下input.type屬性爲讀寫 
 
//body問題  
Firefox的body在body標籤沒有被瀏覽器徹底讀入以前就存在;而IE的body則必須在body標籤被瀏覽器徹底讀入以後才存在 
 
//firefox與IE的父元素(parentElement)的區別  
IE:obj.parentElement  
非IE:obj.parentNode  
解決方法: 由於非IE與IE都支持DOM,所以使用obj.parentNode是不錯選擇 
 
//innerText在IE中能正常工做,可是innerText在FireFox中卻不行. 需用textContent    

對象

相關文章
相關標籤/搜索