浏览器主要分为两类,第一类 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。