javascript在中ie与firefox的区别与解决方案
1.载入xml
ie创建对象:
msXmlAx=new ActiveXObject("Microsoft.XMLDOM");
firefox创建对象:
xDoc=document.implementation.createDocument("","",null);
总体方法为:
///判断浏览器 创建不同的对象
function getXmlDocument()
{
var xDoc;
if(document.implementation && document.implementation.createDocument)
{
xDoc=document.implementation.createDocument("","",null);
}
else if(typeof ActiveXObject !="undefined")
{
var msXmlAx=null;
try{
msXmlAx=new ActiveXObject("Microsoft.XMLDOM");
}
catch(e)
{
msXmlAx=new ActiveXObject ("Microsoft.XMLDOM");
}
xDoc=msXmlAx;
}
if(xDoc== null || typeof xDoc.load=="undefined")
{
xDoc=null;
}
return xDoc;
}
2.insertRow和insertCell
在ie中可直接调用该方法 document.getElementById("xxx").insertRow();
在firefox 中需要放置参数:document.getElementById("xxx").insertRow(-1);
同样 insertRow(-1)也支持ie
3.判断浏览器类型
/*---------------------------------------------------------------
--this function can return the actual browser name and version.--
--USESAGE:There are Two Methods(See the end of this function) --
--Create By Yemoo. DateTime:2006-2-3 21:53:37 --
---------------------------------------------------------------*/
function browserinfo(){
var Browser_Name=navigator.appName;
var Browser_Version=parseFloat(navigator.appVersion);
var Browser_Agent=navigator.userAgent;
var Actual_Version,Actual_Name;
var is_IE=(Browser_Name=="Microsoft Internet Explorer");
var is_NN=(Browser_Name=="Netscape");
if(is_NN){
//upper 5.0 need to be process,lower 5.0 return directly
if(Browser_Version>=5.0){
var Split_Sign=Browser_Agent.lastIndexOf("/");
var Version=Browser_Agent.indexOf(" ",Split_Sign);
var Bname=Browser_Agent.lastIndexOf(" ",Split_Sign);
Actual_Version=Browser_Agent.substring(Split_Sign+1,Version);
Actual_Name=Browser_Agent.substring(Bname+1,Split_Sign);
}
else{
Actual_Version=Browser_Version;
Actual_Name=Browser_Name;
}
}
else if(is_IE){
var Version_Start=Browser_Agent.indexOf("MSIE");
var Version_End=Browser_Agent.indexOf(";",Version_Start);
Actual_Version=Browser_Agent.substring(Version_Start+5,Version_End)
Actual_Name=Browser_Name;
if(Browser_Agent.indexOf("Maxthon")!=-1){
Actual_Name+="(Maxthon)";
}
else if(Browser_Agent.indexOf("Opera")!=-1){
Actual_Name="Opera";
var tempstart=Browser_Agent.indexOf("Opera");
var tempend=Browser_Agent.length;
Actual_Version=Browser_Agent.substring(tempstart+6,tempend)
}
}
else{
Actual_Name="Unknown Navigator"
Actual_Version="Unknown Version"
}
/*------------------------------------------------------------------------------
--Your Can Create new properties of navigator(Acutal_Name and Actual_Version) --
--Userage: --
--1,Call This Function. --
--2,use the property Like This:navigator.Actual_Name/navigator.Actual_Version;--
------------------------------------------------------------------------------*/
navigator.Actual_Name=Actual_Name;
navigator.Actual_Version=Actual_Version;
/*---------------------------------------------------------------------------
--Or Made this a Class. --
--Userage: --
--1,Create a instance of this object like this:var browser=new browserinfo;--
--2,user this instance:browser.Version/browser.Name; --
---------------------------------------------------------------------------*/
this.Name=Actual_Name;
this.Version=Actual_Version;
}
通过: navigator.Actual_Name 得到浏览器名称,navigator.Actual_Version 的到浏览器版本
4. firefox 中无法像ie一样通过documentElement得到xml文本对象的所有元素信息,可以使用替换法:
创建XMLHttpRequest对象,通过它的responseXML返回的xml对象进行操作
5.firefox中不支持window.event
解决方法:
document.onclick=function(e) //要兼容ff的话,这个参数一定要写上
{
e = window.event || e;
e = e.srcElement || e.target;
//其他实现代码
}
6.firefox不支持parentElement,若要使用可写成:parentNode
7.IE中将xml通过xsl进行格式化时,使用如下代码:
xmlDoc.transformNode(xslDoc);
xmlDoc为xml文档
xslDoc为xsl文档
在firefox中使用如下代码:
var xsltProcessor =new XSLTProcessor();
xsltProcessor.importStylesheet(xslDoc);
var resultHtml= xsltProcessor.transformToDocument(xmlDoc);
var oXmlSerializer = new XMLSerializer();
$GetEle("ZfDiv_").innerHTML= oXmlSerializer.serializeToString(resultHtml);
8.ifream加载中 使iframe的高度根据所加载页的高度而改变
网上有代码为:
<iframe onload="document.all.demo.height=document.frames['demo'].document.body.scrollHeight" src="demo.htm" />
代码没有问题,只是在Firefox中不能实现想要的效果
改为:
document.getElementById('demo').height=window.frames['demo'].document.body.scrollHeight
即可