浏览器对document.all的支持差异

从何而来
从IE4开始IE的object model才增加了document.all对象,MSDN中也对 Object.all 有详细的说明,Object.all是个HTMLCollection,不是数组,它包含document.all:
自他出现后,IE后续版本也对其做了很好的支持,并没有打算放弃这个很有意义的属性。曾有一段时间,这个属性连同document.Layers 还被用作Netscape浏览器和IE浏览器的类型判断杀手锏,可惜的是 document.Layers 已经作古,document.all 大有从嫔妃转为正宫之势。

if(document.all){
//do something in IE
}else if(document.layers){
//do something in Netscape
}

经典的浏览器类型判断…… 已经作古,切莫使用,后果自负……

发展壮大
开始的时候,确实其他浏览器都不支持document.all,但是渐渐的,都开始偷偷摸摸的开始支持了。
因为它不是W3C的标准属性,在其他浏览器中也没有找到此集合属性的说明。
说它偷偷摸摸的被支持是有原因的。

document.all的布尔值

<script type="text/javascript">
   window.onload = function() {
       document.getElementById("info").innerHTML = "!!document.all : " + !!document.all;
   }
</script>
<span id="SPAN1"></span>
<div id="info"></div>

这个页面,在IE中的输出是:!!document.all : true
其他浏览器中:!!document.all : false
一般我们都会用一个对象的布尔值来判断它是否存在,那么通过上面的测试,是不是说明,在其他浏览器中 document.all 不存在呢??

使用documen.all获取元素的DOM对象

<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>

可见,这个对象还是可以被用来取对象的,很搞笑吧。偷偷默默的把值就取到了。不过还是少用这个属性为妙,各浏览器在没有统一之前,都可能更新对它的支持,你要是用这个属性,那么相当于给自己的程序里埋了一颗很雷的地雷。小心哪天爆了。还是用document.getElementById()比较安全

转自:http://bbs.csdn.net/topics/340240354

时间: 2024-08-14 05:44:09

浏览器对document.all的支持差异的相关文章

各浏览器对 onbeforeunload 事件的支持与触发条件实现有差异

标准参考 无. 问题描述 一般情况下,onbeforeunload 事件处理函数内会写入一些提示性语句,当用户的浏览器跳转到其他页面时,用来提醒用户当前页面将要跳转,请用户决定是否观看新页面.或者在 onbeforeunload 事件内处理一些业务逻辑,在浏览器跳转到新页面之前 ,执行一些业务逻辑,如保存用户浏览信息等. 简单的说这个事件应仅在页面 URL 发生变化时触发,但是在 IE 中 使用 JavaScript 伪协议执行脚本程序时,也会触发 onbeforeunload 事件. 造成的影

各浏览器对 onunload 事件的支持与触发条件实现有差异

标准参考 在 HTML 4.01 规范中关于 onunload 事件的描述是:当 document 从 window 中移除时,触发 onunload 事件. 关于 HTML 4.01 规范中 onunload 内在事件说明:http://www.w3.org/TR/html401/interact/scripts.html#adef-onunload . MSDN 中关于 onunload 事件的描述:http://msdn.microsoft.com/en-us/library/ms5369

10、网页制作Dreamweaver(扩展:各浏览器对 onunload 事件的支持与触发条件实现有差异)

标准参考 在 HTML 4.01 规范中关于 onunload 事件的描述是:当 document 从 window 中移除时,触发 onunload 事件. 关于 HTML 4.01 规范中 onunload 内在事件说明:http://www.w3.org/TR/html401/interact/scripts.html#adef-onunload . MSDN 中关于 onunload 事件的描述:http://msdn.microsoft.com/en-us/library/ms5369

Javascript检测浏览器对CSS属性的支持 /* supports */

//检测浏览器对CSS属性的支持 supports = (function() { var div = document.createElement('div'), vendors = 'Khtml Ms O Moz Webkit'.split(' '); return function(prop) { if ( prop in div.style ) return true; var len = vendors.length; prop = prop.replace(/^[a-z]/, fun

console.debug()浏览器控制台打印输出 仅仅在支持console的浏览器下打印

console.debug()浏览器控制台打印输出 仅仅在支持console的浏览器下打印 var util = {}; /** * 工具类 */ util = new function() { /** * 控制台打印输出 仅仅在支持console的浏览器下打印 * @param info 信息打印 */ this.debug = function(info){ try{ if(console != undefined && console != null && conso

ie浏览器和火狐浏览器对对容器宽度定义的差异

首先我们说说firefox和IE对CSS的宽度显示有什么不同: 其实CSS ’width’ 指的是标准CSS中所指的width的宽度,在firefox中的宽度就是这个宽度.它只包含容器中内容的宽度.而Internet Explorer ’width’则是指整个容器的宽度,包括内容,padding ,border. Firefox中:容器占的宽度=内容宽度+padding宽度+border宽度 IE中:内容宽度=您定义的容器宽度(Internet Explorer ’width’)-padding

console.debug()浏览器控制台打印输出 只在支持console的浏览器下打印

console.debug()浏览器控制台打印输出 只在支持console的浏览器下打印 var util = {}; /** * 工具类 */ util = new function() { /** * 控制台打印输出 只在支持console的浏览器下打印 * @param info 打印信息 */ this.debug = function(info){ try{ if(console != undefined && console != null && console

web开发之浏览器(二)----JQuery或JS判断浏览器内核版本号以及是否支持W3C盒子模型

1,JQuery或JS判断浏览器内核版本号以及是否支持W3C盒子模型 jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support .在更新的 2.0 版本中,将不再支持 IE 6/7/8. 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9.  以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9及以下的版本. 如果要全面支持 IE,并混合使用 jQuery 1.9及以下 和

关于win7装不了ie8浏览器提示“此安装不支持您的操作系统”解决方案

IE浏览器一直稳定发展,而且每隔一段时间久会推出新的版本,这不有用户说win7装不了ie8浏览器提示"此安装不支持您的操作系统",也不知道哪里出现问题,针对此问题,下面小编和大家讲解win7装不了ie8浏览器提示"此安装不支持您的操作系统"的解决方法. 推荐:雨林木风win7旗舰版下载 具体方法如下: 1.进入Win7系统后,您同时按下Win7系统键盘上的win+R快捷键打开电脑的运行窗口: 2.在打开的运行窗口中,您输入regedit并单击回车,这样就可以打开Wi