ie and mozillar firefox

 
 

Ie和firefox的Js区别



 
 
 

1. 对象问题
1.1 Form对象

现有问题:
现有代码这获得form对象通过document.forms("formName"),这样使用在IE 能接受,MF
不能。
解决方法
改用 作为下标运算。改为document.forms["formName"]
备注
上述的改用
作为下标运算中的formName是id而name

1.2 HTML对象
现有问题:
在 IE 中,HTML 对象的 ID 可以作为
document 的下属对象变量名直接使用。在 MF
中不能。
document.all("itemName")或者document.all("itemId")
解决方法:
使用对象ID作为对象变量名
document.getElementById("itemId")
备注
document.all是IE自定义的方法,所以请大家尽量不使用。
还有一种方式,在IE和MF都可以使用
var
f = document.forms["formName "];
var o = f. itemId;

1.3 DIV对象

现有问题:
在 IE 中,DIV对象可以使用ID作为对象变量名直接使用。在 MF 中不能。
DivId.style.display =
"none"
解决方法:
document.getElementById("DivId").style.display =
"none"
备注
获得对象的方法不管是不是DIV对象,都使用getElementById方法。参见1.2


1.4
关于frame
现有问题
在 IE中
可以用window.testFrame取得该frame,mf中不行
解决方法
在frame的使用方面MF和IE的最主要的区别是:
如果在frame标签中书写了以下属性:

那么IE可以通过id或者name访问这个frame对应的window对象
而mf只可以通过name来访问这个frame对应的window对象
例如如果上述frame标签写在最上层的window里面的htm里面,那么可以这样访问
IE:
window.top.frameId或者window.top.frameName来访问这个window对象
MF:只能这样window.top.frameName来访问这个window对象
另外,在mf和ie中都可以使用window.top.document.getElementById("frameId")来访问frame标签
并且可以通过window.top.document.getElementById("testFrame").src
= 'xx.htm'来切换frame的内容
也都可以通过window.top.frameName.location =
'xx.htm'来切换frame的内容

1.5 窗口

现有问题
IE中可以通过showModalDialog和showModelessDialog打开模态和非模态窗口,但是MF不支持。
解决办法
直接使用window.open(pageURL,name,parameters)方式打开新窗口。
如果需要传递参数,可以使用frame或者iframe。

2.
总结
2.1 在JS中定义各种对象变量名时,尽量使用id,避免使用name。
在 IE 中,HTML 对象的 ID 可以作为 document
的下属对象变量名直接使用。在 MF 中不能,所以在平常使用时请尽量使用id,避免只使用name,而不使用id。

2.2 变量名与某 HTML 对象
id 相同的问题
现有问题
在 MF 中,因为对象 id 不作为 HTML 对象的名称,所以可以使用与 HTML 对象 id 相同的变量名,IE
中不能。
解决方法
在声明变量时,一律加上 var ,以避免歧义,这样在 IE 中亦可正常运行。
此外,最好不要取与 HTML 对象 id
相同的变量名,以减少错误。


1. document.all
Firefox可以兼容document.all,
但会生成一条警告。可以用getElementById("*") 或者
getElementByTagName("*)来代替
不过对于document.all.length等属性,则完全不兼容。
2.
parentElement
这个也不兼容。比方说, obj.parentElement.name 则应改成
obj.parentNode.attributes.getNamedItem("name").nodeValue (不知道如何写得更简洁些)
3.
event
W3C不支持windows.event
比方说:
在IE里面

判断浏览器navigator.appName == "Microsoft Internet Explorer"
navigator.userAgent.indexOf("MSIE")>0
firefox不支持
window.close()
innerText textContent
firefox只有在window.open()的情况下支持window.close();但如果这个页是iframe也不行,建议用top.close.
children不支持,支持childNodes
firefox读xml也要注意IE里面01234子节点,firefox里面就变成13579了
IE
var opname=c.childNodes[0].text;
var opid=c.childNodes[1].text;
var opurl=c.childNodes[2].text;
var opuser=c.childNodes[3].text;
var opadress=c.childNodes[4].text
ff
var opname=c.childNodes[1].textContent;
var opid=c.childNodes[3].textContent;
var opurl=c.childNodes[5].textContent;
var opuser=c.childNodes[7].textContent;
var opadress=c.childNodes[9].textContent;
但是firefox还是支持chindNodes的

在firefox中,自己定义的属性必须getAttribute()取得
但是千万注意,getAttribute()取得的值是不会变的,比如
var a=b.getAttribute("属性")
b.属性=100
var c=b.getAttribute("属性")
不管b.属性改成多少,a和c是相等的。
建议操作方式
全局变量 fag=0;
if(fag==0)
fag=b.属性=b.getAttribute("属性");

firefox不能写function a.b()
  {}
要写成a.b=function(){}

firefox不支持src="file:///c:a.gif";

xmlHttp.setRequestHeader firefox里面一定要大写

ff的ajax,IE里面可以有很多写法,但ff里面有时就会出错,下面写一种不会出错的写法
function GetDataFromServer( url, id )
{
   if(window.XMLHttpRequest)
   { request = new XMLHttpRequest();}
   else
   if(window.ActiveXObject)
   { request = new ActiveXObject("MSXML2.XMLHTTP.5.0");}
   var serverUrl = url ;
   
   if( request )
   {
    window.status = "数据更新中...." ;
    
    request.open("get",serverUrl,true) ;
    request.setRequestHeader("content-type","application/x-www-form-

urlencoded") ;
    request.onreadystatechange = function(){onResponse(id);};
    request.send(null) ;
   
    
   }
}
  function onResponse(id)
  {
   var xmlHttp=request;
   if(xmlHttp.readyState == 4)
   {
    if(xmlHttp.status == 200)
    {           
     var result =  xmlHttp.responseText ;
     if(document.getElementById("load_"+id))
     {
      逻辑;
     }
     window.status = "数据更新完成" ;
    }
   }
  }

同时支持IE和Firefox的日期控件---DatePicker

ie parentElement
firefox parentNode

posted on 2007-08-13 15:35 C Sharp 阅读(2) 评论(0)  编辑 收藏 引用 网摘 所属分类: JavaScript

 

Suney_china

交流更多,收获更多?
随笔 - 81, 文章 - 9, 评论 - 1, 引用 - 0
数据加载中……

showModalDialog 模式窗口浏览器支持问题

 

 



function ShowDialog(a,b) 
{
 var list
=new Array();
 list[
0]=a;
 list[
1]=b; 
if(window.navigator.appName=="Microsoft Internet Explorer"//IE
 {
 showModalDialog(
'SightFckEditor.aspx',list,"status=yes");
 }

 
else  //other 


document.getElementById(
"hiddenValue").value=a.id; //传入的是当前的id 


document.getElementById(
"hiddenTxt").value=b.id; window.open('SightFckEditor.aspx','newWin','modal=yes,width=600,height=600,resizable=no,scrollbars=no'); }
 
}


由于在firefox 是不支持showModalDialog 这个模式窗口的,但是firefox是支持window.open   当参数modal
= yes 它可以弹出模式窗口了,newWin是当前整个窗体的对象,在open时,用hidden存的是当前所点击的对象的id 就是把对象给传过去,

 function returnValue(txtValue) 

if(txtValue.length>900)
 
{ alert('录入字符过多!'); return; }
 
if(window.navigator.appName=='Microsoft Internet Explorer'//ie
 { window.dialogArguments[0].innerHTML=txtValue; window.dialogArguments[1].value=txtValue; } 
else //other 

var 
lableValue
=window.opener.document.getElementById('hiddenValue').value; 
var txtHidden
=window.opener.document.getElementById('hiddenTxt').value; 

window.opener.document.getElementById(lableValue).innerHTML
=txtValue; 

window.opener.document.getElementById(txtHidden).value
=txtValue; }
 }



 
if (window.navigator.appName == " Microsoft Internet Explorer " // ie { var txt=window.dialogArguments[1].value; // 获取对象的值 MarkEditor(txt); // 赋值给fck } else  // other { var txt=window.opener.document.getElementById('hiddenValue').value; // 获取对象的值 MarkEditor(window.opener.document.getElementById(txt).innerHTML); // 赋值给fck }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值