IE跟火狐的一些区别
1. Iframe不显示问题
<iframe id="rightFrame" width="100%" height="80%" frameborder="0" style="overflow-y:hidden;overflow-x:hidden;"/>
在火狐中无法识别width="100%" height="80%"这种百分比,所以会显示不出来
解决方法:一:width="800px" height="800px" 写死在页面上
二:
<body>
<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
<tr >
<td>
<td vAlign="top">
<iframe id="rightFrame" width="100%" height="100%" scrolling="no" frameborder="0" style="overflow-y:hidden;overflow-x:hidden"/>
</td>
</tr>
</table>
</body>
这样,在ie和火狐中都可兼容(注:table必须为body仅有的子元素,如果想在页面上加其它东西,可以在table里加)
2. 得到Iframe元素问题
当iframe多层嵌套时,我们可以用id得到相应的iframe元素,比如
<iframe id=” rbp_content_iframe”><iframe id=” Content”></iframe></iframe>
在ie中,可以用
top.rbp_content_iframe.Content .location.reload() ;(top表示*元素)刷新iframe(Content);
在火狐中则要用
top.document.getElementById("rbp_content_iframe").contentWindow.getElementById("Content").contentWindow.location.reload();
两者兼容用
top.document.getElementById("rbp_content_iframe").contentWindow.document.getElementById("Content").contentWindow.document.location.reload();
3. function$(obj){returndocument.getElementById(obj);}问题
通常我们要得到一个元素,就用document.getElementById(obj),但以前是使用上面的方式来简化得到的过程,这样再想得到一个元素,就用$(id)就可
但这种方式会用jquery的元素选择器起冲突,所以要把这种话删除,别把js文件中的$(id)全改成document.getElementById(id);这种形式,页面引用的其它js文件也可改才可以。
4. parentElement问题
在火狐中不支持parentElement,要兼容,则要用parentNode。
5. lastChild问题
ie和火狐都可以用lastChild,但火狐中的lastChild判断比较严格,经常很多不是节点的元素比如文本甚至空格,都可能为lastChild,所以要想得到最后的文本,
var last = labelObj.parentNode.parentNode.parentNode.lastChild;
if(last.nodeType!=1) last = last.previousSibling;
这样加个判断即可
6. ActiveXObject问题
ActiveXObject只支持ie,当火狐用的时候就会报错,而以前用到的,都是var obj = new ActiveXObject("Scripting.Dictionary")这种形式,用来当作map对象存储东西,由于要兼容火狐,而javascript没有默认的map方法,现在我们使用一个用Array 写的map组件,路径为reportmis/mis2/gezComponent/js/jsMap.js,引入即可,该文件头的注释已经写明了该对象的使用方式,我们要用时
var map = new Map();map.put(“ab”,2);
使用案例参照:数据管理中的数据别名管理reportmis\WebRoot\eds\js\aliasManager.js,reportmis\WebRoot\eds\dataTableManager\aliasManager.jsp