瀏覽器主要分爲兩類,第一類 IE系列,第二類 FF(Firefox)、 chrome和 safari(其中 netscape和 opera未加入測試)。如果沒有特別說明 chrome和 safari,則歸類在 FF。
一. 跨頁面的數據調用
1. IE中直接使用 parent就代表了父頁面的 window,而在 FF裏面必須要用 parent. contentWindow;
2. <iframe id=”a” name=”a” />,在 FF中使用 frames數組的數字索引 , 或是要設置 iframe的 name值才能調用 iframe(frames[“a”]或者 frame[0]); 在 IE中可以不設置 name就能調用到這個 iframe,因爲 IE查找機制中 id可以代替 name。
二. 對 xml的解析
1. IE、 FF/safari、 Chorme對 xml文件解析不同;而且報錯方式也不同:
IE : xmldoc . parseError . errorCode=0;
FF : xmldoc . documentElement . tagName = “ parsererror”;
//IE/FF/Chrome/safari 通用 加載 XML 文件並返回 XML 文檔節點
function loadXmlFile ( xmlFile , isAsync ){
isAsync = isAsync || false ;
var xmlDom = null ;
if ( window . ActiveXObject ){
xmlDom = new ActiveXObject ( "Microsoft.XMLDOM" );
//xmlDom.loadXML(xmlFile);// 如果用的是 XML 字符串
xmlDom . load ( xmlFile ); // 如果用的是 xml 文件。
xmlDom . async = isAsync ;
} else if ( document . implementation && document . implementation . createDocument ){
var xmlhttp = new window . XMLHttpRequest ();
xmlhttp . open ( "GET" , xmlFile , isAsync );
xmlhttp . send ( null );
xmlDom = xmlhttp . responseXML ;
} else {
xmlDom = null ;
}
return xmlDom ;
}
2. IE、 FF/safari/Chrome對 xml字符串解析不同。
3. IE、 FF對 xml節點解析不同。
<ServerConfig>
<WriteLog>1</WriteLog>
<IP>192.168.1.70</IP>
<Port>8021</Port>
</ServerConfig >
一般認爲 ServerConfig 節點下的第一哥子節點是 WriteLog 。 但是在 FF 中, ServerConfig 不是 WriteLog ,而是一個默認的文本子節點 # 其內容爲空。在 FF 解析 xml 內容時,要注意判斷這個默認的文本子節點 。
三. Js需要注意的地方
1. 執行 js,出現錯誤時, IE繼續執行, FF中斷執行 。
2. 獲取某個節點內無 html節點內容
IE: obj.innerText; FF: obj.textContent
3. html層問題
在 IE中,層的內容爲空,則忽略該層;在 FF中,層的內容爲空,不會忽略,會阻擋下一層。設置 display:none就能使該層不可能
4. marquee動態改變的問題
marque動態改變其值, IE會重新計算其文本長度,自動調整循環;在 FF中,按照初始化的內容,計算文本長度,動態改變內容後,可能出現內容未顯示完整就進行下一此循環。
5. 多層接收同一事件
多層重疊在一起,又監聽同一事件。 IE中,都會接收到; FF中,最上層纔會接收到事件,下層的需要手動傳遞事件。
6. 每一次使用 window.setInterval,都要記得使用 window.clearInterval來清除。否則,在關閉的某個 iframe裏面有 setInterval則會出錯,造成內存溢出。
7. 對 html元素的調用,
在 IE中可以使用 document.all.ElemName、 ElemName或是 ElemID等簡便方法進行調用;在 FF中必須用 document.getElementById或是 document.getElementsByName等規範調用。
8. 滾動條樣式, IE能設置, FF不能設置 。
9. 背景透明, IE: filter, FF: opacity。
10. width+border:可見寬度。在 FF中是 width+border,在 IE中是 width。