Firefox,Safari与IE兼容性问题整理

兼容以上浏览器主要注意几个方面:

     1.获取对象属性

           ie获取对象属性比较简单,不管是否是自定义的属性均可直接获取

           例如:

<input  type="radio" value="11" name="x" xid="DeptID_Exec" xname="DName_Exec"/>

在js中获取input的value,xid,xname 均可直接写this.value,this.xid,this.xname即可.

但是在ff和safari下需要注意value可直接使用this.value取值,但是自定义的属性如xid和xname则需要

使用xid=this.attributes['xid'].nodeValue; xname = this.attributes['xname'].nodeValue; 来进行

取值. 

 

     2.自定义的cell赋值问题

           因各种业务有时我们需要使用js构建table.在ie下构建比较简单

 

var table = document.createElement("TABLE");
var Row = table.insertRow(0);
var cell = Row.insertCell(0);

 

cell.innerText = dataRows["DName"];
.....(此处省略几百字构建表的过程)

 

类似以上语句即可构建表.

 

但是在ff和safari下

cell中显示的文字必须使用以下方式:

cell.appendChild(document.createTextNode("需要显示的文字"));

   3.今天又遇到离奇的事情,某个功能中需要进行人员选择操作,选择人员是使用弹出窗口,选择

后要在当前窗口创建table

使用的仍然是

var table = document.createElement("TABLE");
var Row = table.insertRow();
var cell = Row.insertCell();

但是在firefox下到var Row = table.insertRow();就会报错,问题找了半天,还以为是后面的数据错误

或者是firefox弹出窗体操作不同导致的,最后才查出来原来是在

insertRow和insertCell方法有一个默认的参数-1,表示在当前行或者单元格后插入行和单元格

在ie中可以不用填写这个参数,但是在firefox浏览器下必须加上这个参数否则就会出现缺少参数的错误

var Row = table.insertRow(-1);
var cell = Row.insertCell(0);

......此问题困扰我2个小时哎

 

其它问题待遇到时再进行整理
 

注:FF和safari的解析方式很相似,所以在进行兼容性调试时用ff进行测试即可
 

 

posted on 2011-05-11 10:19  悟空空  阅读(5876)  评论(0编辑  收藏  举报

导航