document.all的详细解释(document.all基本上所有浏览器可用!)

document.all的详细解释(document.all基本上所有浏览器可用!)从何而来从IE4开始IE的objectmodel才增加了document.all对象,MSDN中也对Object.all有详细的说明,Object.all是个HTMLCollection,不是数组,它包含document.all:http://msdn.microsoft.com/en-us/library/ms537434%28VS.85%29.aspx自他出现后,IE后续版本也…

大家好,又见面了,我是你们的朋友全栈君。

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

 

if(document.all){

//do something in IE

}else if(document.layers){

//do something in Netscape

}

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

————————————————————————

document.all是IE 4.0及以上版本的专有属性,是一个表示当前文档的所有对象的娄组,不仅包括页面上可见的实体对象,还包括一些不可见的对象,比如html注释等等。在document.all数组里面,元素不分层次,是按照其在文档中出现的先后顺序,平行地罗列的。所以可以用数字索引来引用到任何一个元素。但比较常用的是用对象id来引用一个特定的对象,比如document.all[“element”]这样。
document.layers是Netscape 4.x专有的属性,是一个代表所有由储如<div><layer>等定位了的元素的数组。通常也是用<div>或<layer>对象的id属性来引用的,但是这里面不包含除此以外的其它元素。
其实这两个属性没什么可比性,大概你经常看到他们同时出时,这有一个历史原因。在第四代浏览器出现的时候,标准相当混乱,Netscape和微软分别推出了它们的Navigator 4.x和IE 4.0,这两个浏览器的巨大差异,也使开发者面临了一个使网页跨浏览器兼容的噩梦。而document.layer和document.all分别是两者一个最显著的标志,为了确定浏览者使用的什么浏览器,通常用是否存在document.layers和document.all来判断。
新的统一的标准用document.getElementById等系列方法来引用DOM对象,而且Netscape 6.0以后放弃了layers特征,虽然IE继续保留了document.all,但这最终没有成为DOM标准的一部分。希望document.layers和document.all能够早日作古,让标准早日深入人心!

—————————————————————————–

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

例1(这个可以让你理解文档中哪些是对象)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Document.All Example</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
</head>
<body>
<h1>Example Heading</h1>
<hr />
<p>This is a <em>paragraph</em>. It is only a <em>paragraph.</em></p>
<p>Yet another <em>paragraph.</em></p>
<p>This final <em>paragraph</em> has <em id="special">special emphasis.</em></p>
<hr />
<script type="text/javascript">
<!--
var i,origLength;
origLength = document.all.length;
document.write('document.all.length='+origLength+"<br />");
for (i = 0; i < origLength; i++)
{
document.write("document.all["+i+"]="+document.all[i].tagName+"<br />");
}
//-->
</script>
</body>
</html>

至于结果,自己去看看各个浏览器的差异,以前的浏览器(可能是lt IE8之前)会显示document.all.length=18(妈蛋,这样子:image);现代浏览器统一显示document.all.length=17image,自己看看区别吧…

——————————————————————————————————————–

下面是关于document.all的其他用处…:

一.
document.all是页面内所有元素的一个集合。例如:      
document.all(0)表示页面内第一个元素
.
document.all可以判断浏览器是否是IE(其实还有其他方法不断可以判断IE,还可以判断是哪个版本的IE…自行百度吧…)

if(document.all){   
    alert('IS IE!');   
  }

else{

    alert('NOT IE!');

}

关于这个问题,我进行了测试,在所有现在浏览器(除IE)下,显示为:

typeof(document.all)
“undefined”

在IE(包括IE9~IE10,IE11没测试,根据微软的尿性,估计也一样)下:

typeof(document.all)
“object”

所以..判断为IE

附录:

从IE11、Chrome开始,document.all将返回HTMLCollection子类HTMLAllCollection的对象,其行为特征和HTMLCollection一致。(Xee:IE11之前的版本document.all返回HTMLCollection的对象)但IE11中的HTMLAllCollection还可以当作函数使用。

 

三.
也可以通过给某个元素设置id属性(id=aaaa),然后用document.all.aaaa调用该元素。

标准DOM中的访问方法

开头就说过document.all[]不符合WEB标准(Xee:现在的浏览器基本都支持了),那用什么来替代它呢?document.getElementById

Most third-party browsers are “strict standards” implementations, meaning that they implement W3C and ECMA standards and ignore most of the proprietary object models of Internet Explorer and Netscape.If the demographic for your Web site includes users likely to use less common browsers, such as Linux aficionados, it might be a good idea to avoid IE-specific features and use the W3C DOM instead. by Internet Explorer 6, we see that IE implements significant portions of the W3C DOM.

这段话的意思是大多数第三方浏览器只支持W3C的DOM,如果你的网站用户使用其他的浏览器,那么你最好避免使用IE的私有属性。而且IE6也开始支持W3C DOM。

毕竟大多数人还不了解标准,在使用标准前,你还可以在你的网页中用document.all[]访问文档对象,

原生JS(标准的访问方法)有3种方式来获取元素:

getElementById('id') 
getElementsByName('name') 
getElementsByTagName('tag') 
getElementById是获取元素最快的方式。

因为不是w3c标准,所以我尽量避免使用document.all(Xee:现在已经可以完全使用了,IE所有浏览器支持!)

<参考:http://www.cnblogs.com/zwl12549/archive/2007/07/09/811141.aspx & http://www.jb51.net/article/29091.htm>

转载于:https://www.cnblogs.com/ChandlerVer5/p/js_document.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158181.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月12日 上午7:16
下一篇 2022年7月12日 上午7:16


相关推荐

  • 华为悦盒ec6108v9刷机包当贝_华为悦盒ec6108v9c激活成功教程教程

    华为悦盒ec6108v9刷机包当贝_华为悦盒ec6108v9c激活成功教程教程华为悦盒EC6108V9U激活成功教程过程详细解释带扫盲。

    2022年8月4日
    368
  • SNMP协议具体解释

    SNMP协议具体解释

    2021年12月3日
    160
  • 指针常量和常量指针区别

    指针常量和常量指针区别1 指针常量 指针类型的常量 int constp 本质上一个常量 指针用来说明常量的类型 表示该常量是一个指针类型的常量 在指针常量中 指针自身的值是一个常量 不可改变 始终指向同一个地址 在定义的同时必须初始化 用法如下 inta 10 b 20 int constp amp a p 30 p 指向的地址是一定的 但其内容可以修改 2 常量指针 指向 常量 的指针 constint p intconst p 常量指针本质上是一个指

    2026年3月26日
    2
  • UML——九种图和几大关系

    UML——九种图和几大关系UML——九种图和几大关系

    2022年4月24日
    70
  • 用php做一个网站,教你如何用PHP开发一个完整网站

    用php做一个网站,教你如何用PHP开发一个完整网站原标题 教你如何用 PHP 开发一个完整网站作为世界上最好的语言 PHP 在 2017 年发展依然一路凯歌 PHP 语言受到众多企业家们的喜爱 众所周知 PHP 技术主要用于一个网站的后台开发 那么如何用 PHP 开发一个完整的网站呢 本文创客学院 web 全栈培训讲师和学员分享 PHP 开发教程之如何用 PHP 开发一个完整网站呢 PHP 开发教程之如何用 PHP 开发一个完整网站 PHP 支持的系统平台包括 UNIX UNIX 类操

    2026年3月17日
    2
  • keil5使用技巧

    keil5使用技巧文章目录前言1、关闭其他文件2、keil注释如何不乱码4、每段程序后都要空行5、添加头文件6、开启和关闭工程列表框7、找到库函数总结前言1、关闭其他文件2、keil注释如何不乱码4、每段程序后都要空行5、添加头文件6、开启和关闭工程列表框7、找到库函数方法就是打开一个.h文件拖到最后→看到如下字样的,就是库函数了/**@defgroupGPIO_Exported_Functions@{*/例如:找EXTI的库函数打开exti.h文件,拖到最后,这些就是EXTI

    2022年5月23日
    64

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号