实现IE与Firefox的DHTML

| |
[不指定 2007/09/18 10:28 | by ipaddr ]

1.在访问某一节点时,如 childNodes[i],要获得这个节点的值,这个值是<![CDATA[]]类型,在IE中,可以这样访问 childNodes[i].text,childNodes[i].firstChild.nodeValue;在Firefox中只能通过childNodes[i].firstChild.nodeValue访问.

2.
<root>
<e>text</e>
</root>

以上的XML,在IE中,<e>是<root>的第一个子元素,可以通过 root.childNodes[0],或root.firstChild访问<e>,但在Firefox中,<e>是<root>的第二个子元素,第一个子元素是换行符,nodeType是#text,如果将代码改为以下:

<root><e>text</e></root>

那么IE与Firefox都是一样的,<e>都是<root>的第一个子元素.

3.insertRow,insertCell
在IE中,insertRow()如果没有指定参数,则在表格后面添加行,默认参数为-1,如果在Firefox中,则一定要指定参数,如insertRow(-1),否则会出错.

4.select options
在IE中,在select.options集合中添加一个option,需要先将创建的option添加到options中,再指定option的text和value的值,在firefox中,则相反,需要先指定值,后添加.
如:
var opt=document.createElement("OPTION");
opt.innerHTML="option";
opt.value="value";
oSelect.options.add(opt);
(IE中报错:参数无效)

以上代码在IE中运行会出错,在Firefox中则正常插入option
以下代码,则在IE中正常,在Firefox中则出错:
var opt=document.createElement("OPTION");
oSelect.options.add(opt);
opt.innerHTML="option";
opt.value="value";
(在Firefox中警告: ID/NAME 所引用的元素位于全局范围。请使用 W3C 的标准形式 document.getElementById() 。)

5.attributes
在IE中,访问某个元素(element)的属性(attributes)时,是通过索引来读取的,即你要知道你要读取的属性是在哪个位置,如:<tag name="li" type="elment" />,如你要读取属性 type,那么在IE中是通过索引的,即: oTag.attributes[1]。但在Firefox中可以用属性名来索引,如 oTag.attributes["type"] 。如果想通过名字来读取属性,那么可以用attributes的方法 getNamedItem,如前面,读取 type 属性的值,可以这样: oTag.attributes.getNamedItem("type").value

6.Opacity(透明度)
在IE或Firefox中都可以设置元素的透明度,最低透明度是0%,最高是100%,在IE中设置元素的透明度是通过元素的style.filter="alpha(opacity=30)" 来设置的,而firefox是通过style.MozOpacity设置的,而且设置的值有点不同,IE是通过百份值,如80(即80%),而firefox对应的值是 .8 (对应80%) 。

Program | 评论(0) | 引用(0) | 阅读(7009)