4. 特殊集合
除了属性和方法,document对象还有一些特殊的集合。这些集合都是HTMLCollection对象,为访问文档常用的部分提供了快捷方式,包括:
document.anchors,包含文档中所有带name特性的元素;
document.applets,包含文档中所有的元素,因为不再推荐使用元素,所以这个集合已经不建议使用了;
document.forms,包含文档中所有的元素,与document.getElementsByTagName("form")得到的结果相同;
document.links,包含文档中所有带href特性的元素。
这个特殊集合始终都可以通过HTMLDocument对象访问到,而且,与HTMLCollection对象类似,集合中的项也会随着当前文档内容的更新而更新。
5. DOM一致性检测
由于DOM分为多个级别,也包含多个部分,因此检测浏览器实现了DOM的哪些部分就十分必要了。document.implementation属性就是为此提供相应信息和功能的对象,与浏览器对DOM的实现直接对应。DOM1级只为document.implementation规定了一个方法,即hasFeature()。这个方法接受两个参数:要检测的DOM功能的名称及版本号。如果浏览器支持给定名称和版本的功能,则该方法返回true,如下面的例子所示:
var hasXmlDom = document.implementation.hasFeature("XML", "1.0");
下表列出了可以检测的不同的值及版本号。
功 能版 本 号Core1.0、2.0、3.0基本的DOM,用于描述表现文档的节点树XML1.0、2.0、3.0Core的XML扩展,添加了对CDATA、处理指令及实体的支持HTML1.0、2.0XML的HTML扩展,添加了对HTML特有元素及实体的支持Views2.0基于某些样式完成文档的格式化StyleSheets2.0将样式表关联到文档CSS2.0对层叠样式表1级的支持CSS22.0对层叠样式表2级的支持Events2.0,3.0常规的DOM事件UIEvents2.0,3.0用户界面事件MouseEvents2.0,3.0由鼠标引发的事件(click、mouseover等)MutationEvents2.0,3.0DOM树变化时引发的事件HTMLEvents2.0HTML4.01事件Range2.0用于操作DOM树中某个范围的对象和方法Traversal2.0遍历DOM树的方法LS3.0文件与DOM树之间的同步加载和保存LS-Async3.0文件与DOM树之间的异步加载和保存Validation3.0在确保有效的前提下修改DOM树的方法
尽管使用hasFeature()确实方便,但也有缺点。因为实现者可以自行决定是否与DOM规范的不同部分保持一致。事实上,要想让hasFearture()方法针对所有值都返回true很容易,但返回true有时候也不意味着实现与规范一致。例如,Safari 2.x及更早版本会在没有完全实现某些DOM功能的情况下也返回true。为此,我们建议多数情况下,在使用DOM的某些特殊的功能之前,最好除了检测hasFeature()之外,还同时使用能力检测。
6. 文档写入
有一个document对象的功能已经存在很多年了,那就是将输出流写入到网页中的能力。这个能力体现在下列4个方法中:write()、writeln()、open()和close()。其中,write()和writeln()方法都接受一个字符串参数,即要写入到输出流中的文本。write()会原样写入,而writeln()则会在字符串的末尾添加一个换行符(\n)。在页面被加载的过程中,可以使用这两个方法向页面中动态地加入内容,如下面的例子所示。
document.write() Example
The current date and time is:
document.write("" + (new Date()).toString() + "");
想要了解更多Java基础知识,可以点击评论区链接和小编一起学习java吧,此视频教程为初学者而著,零基础入门篇!给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili