JavaScript在IE瀏覽器和Firefox瀏覽器中的差別總結

window.event對象差別 
IE:有window.event對象 
FF:沒有window.event對象。能夠經過給函數的參數傳遞event對象。如onmousemove=doMouseMove(event) 

獲取鼠標當前座標 
IE:event.x和event.y。 
FF:event.pageX和event.pageY。 
通用:二者都有event.clientX和event.clientY屬性。 

鼠標當前座標(加上滾動條滾過的距離) 
IE:event.offsetX和event.offsetY。 
FF:event.layerX和event.layerY。 

標籤的x和y的座標位置:style.posLeft 和 style.posTop 
IE:有。 
FF:沒有。 
通用:object.offsetLeft 和 object.offsetTop。 


獲取窗體的高度和寬度 
IE:document.body.offsetWidth和document.body.offsetHeight。注意:此時頁面必定要有body標籤。 
FF:window.innerWidth和window.innerHegiht,以及document.documentElement.clientWidth和document.documentElement.clientHeight。 
通用:document.body.clientWidth和document.body.clientHeight。 

添加事件 
IE:element.attachEvent(」onclick」, func);。 
FF:element.addEventListener(」click」, func, true)。 
通用:element.onclick=func。雖然均可以使用onclick事件,可是onclick和上面兩種方法的效果是不同的,onclick只有執行一個過程,而attachEvent和addEventListener執行的是一個過程列表,也就是多個過程。例如:element.attachEvent(」onclick」, func1);element.attachEvent(」onclick」, func2)這樣func1和func2都會被執行。 

在這裏斷橋殘雪,曾經寫過一個通用的添加刪除綁定事件的函數,你們能夠查看如下文章:《JavaScript跨瀏覽器的添加刪除事件綁定函數》 

標籤的自定義屬性 
IE:若是給標籤div1定義了一個屬性value,能夠div1.value和div1["value"]取得該值。 
FF:不能用div1.value和div1["value"]取。 
通用:div1.getAttribute(」value」)。 

父節點、子節點和刪除節點 
IE:parentElement、parement.children,element.romoveNode(true)。 
FF:parentNode、parentNode.childNodes,node.parentNode.removeChild(node)。 


clientX,pageX,offsetX,x,layerX,screenX,offsetLeft 
screenX:鼠標在顯示屏幕上的座標。 
clientX:鼠標在頁面顯示區域的座標。 
注:以上兩個都是各瀏覽器通用的。如下爲特有方法: 

pageX:FF特有,鼠標在頁面上的位置,從頁面左上角開始定位,這個能夠很方便在整個頁面上進行定位,IE沒有直接替換的屬性。 
layerX:FF特有,鼠標相對於「觸發事件的元素的層級關係中離該元素最近的,設置了position的父元素」的邊界的位置,從border的左上角開始定位,即若是這個父元素存在border,則座標原點在border的左上角,而不是內容區域的左上角。 
offsetX:IE特有,鼠標相對於「觸發事件的元素」的位置,從內容區域左上角開始定位,不是從border左上角開始!這個屬性比較好用,用來判斷鼠標點在一個元素中的哪一個位置很方便,FF沒有直接替換的屬性。 
x:IE特有,跟layerX一個效果,可做爲layerX的直接替換屬性。 
注:IE和FF的定位有個1px的差異,實際上,IE的定位從0開始,FF的定位從1開始,FF永遠會比IE大1px,須要根據實際狀況處理。 

offsetLeft:這個屬性不是事件對象的屬性,而是DOM對象全部的,該屬性表示的是DOM對象在「該DOM對象的層級關係中離該對象最近的,設置了position的父對象」中的位置,雖然話是這麼說的,可是不一樣的瀏覽器效果不同。 

FF中嚴格按上述說明執行,可是在IE6/7中,這個屬性返回該DOM對象在其直接父對象中的位置,可是IE8改正了這個問題,不過IE8又有了一個新問題,其餘的瀏覽器都是從父對象的內容區域的左上角開始定位,IE8確是從父元素的border的左上角開始定位,因爲測試環境爲IETester中的IE8,不能排除是IETester的問題。node

相關文章
相關標籤/搜索