Friends

document.all 在各浏览器中的支持不同

各浏览器中对 document.all 方法的支持不同,使用它获取元素引用可能造成兼容性问题。

浏览器返回值

| 浏览器 | 返回值 | | :-------- | --------:| | IE6 IE7 IE8(Q) | document.all : [object] | | Opera Safari IE8(S) | document.all : [object HTMLColletion] | | Firefox(Q) | document.all : [object HTML document.all.class] | | Firefox(S) | document.all : undefined | | Chrome(S) | document.all : [object HTMLColletion] |

!!document.all返回值

| 浏览器 | 返回值 | | :-------- | --------:| | IE6 IE7 IE8 | !!document.all : true | | Firefox Chrome Safari Opera | !!document.all : false |

如下代码firefox(s)报错,document.all undefinded

<html id="HTML1">
<script type="text/javascript">
    window.onload = function() {
        var html = "<table border='1' style='font-size:12px;'>";
        function getElement(sec) {
            html += "<tr><td>" + sec + "</td>" + "<td>" + eval(sec).id + "</td>";
        }
        getElement("document.all(0)");
        getElement("document.all[0]");
        getElement("document.all.item(0)");
        getElement("document.all('SPAN1')");
        getElement("document.all.SPAN1");
        getElement("document.all['SPAN1']");
        getElement("document.all.namedItem('SPAN1')");
        html += "</table>";
        document.getElementById("info").innerHTML = html;
    }
</script>
<span id="SPAN1"></span>
<div id="info"></div>
</html>

解决方法

由于firefox对docuemnt.all支持有问题,所以最好使用document.getElementById, document.getElementByTagName 获取dom

Written on January 2, 2013