JavaScript学习-DOM2和DOM3的变化
来源:互联网 发布:云计算服务器价格 编辑:程序博客网 时间:2024/05/19 07:11
1,介绍
- DOM1级主要定义的是HTML和XML文档的底层结构。DOM2和DOM3级则在这个结构的基础上引入了更多的交互能力,也支持了更高级的XML特性。
- DOM2和DOM3级分为许多模块(模块之间具有某种关联),分别描述了DOM的某个非常具体的子集。这些模块如下。
- DOM3级又增加了“XPath”模块和“加载与保存”(Load and Save)模块。
- DOM2和3级的目的在于扩展DOM API,以满足操作XML的所有需求。
- “DOM2级核心”没有引入新类型,它只是在DOM1级的基础上通过增加新方法和新属性来增强了既有类型。
- “DOM3级核心”增强了既有类型,但也引入了一些新类型。
- “DOM2级视图”和”DOM2级HTML”增强既有类型。
可使用下列代码来确定浏览器是否支持这些DOM模块
var supportsDOM2Core = document.implementation.hasFeature("Core","2.0");var supportsDOM3Core = document.implementation.hasFeature("Core","3.0");var supportsDOM2HTML = document.implementation.hasFeature("HTML","2.0");var supportsDOM2Views = document.implementation.hasFeature("Views","2.0");var supportsDOMXML = document.implementation.hasFeature("XML","2.0");
2,针对XML命名空间的变化
- 从技术上说,HTML不支持XML命名空间,但XHTML支持XML命名空间。
命名空间要使用xmlns特性来指定。XHTML的命名空间是http://ww.w3.org/1999/xhtml ,在任何格式良好的XHTML页面中,都应该将其包含在元素中,如下所示
<html xmlns="http://ww.w3.org/1999/xhtml"> <head> <title>Example XHTML page</title> </head> <body> Hello world! </body></html>
有时为了避免不同语言间的冲突,也需要使用命名空间来限定特性。如下所示
<xhtml:html xmlns:xhtml="http://ww.w3.org/1999/xhtml"> <xhtml:head> <xhtml:title>Example XHTML page</xhtml:title> </xhtml:head> <xhtml:body **xhtml:class="home">** Hello world! </xhtml:body></xhtml:html>
在混合使用两种语言的情况下,命名空间的用处非常大了,如下所示混合了XHTML和SVG语言的文档
<html xmlns="http://ww.w3.org/1999/xhtml"> <head> <title>Example SHTML page</title> </head> <body> <svg xmlns="http://ww.w3.org/2000/svg" version="1.1" viewBox="0 0 100 100" style="width:100%; height"100%"> <rect x="0" y="0" width="100" height="100" style="fill:red"/> </svg> </body></html>
使用命名空间后DOM1级方法并没有提供相关的API,“DOM2级核心”提供了特定于命名空间的版本解决了这个问题。
Node类型的变化
- 在DOM2级中,Node类型包含下列特定于命名空间的属性。
以下面文档为例
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Example XHTML page</title> </head> <body> <s:svg xmlns:s="http://ww.w3.org/2000/svg" version="1.1" viewBox="0 0 100 100" style="width:100%; height:100%"> <s:rect x="0" y="0" width="100" height="100" style="fill:red"/> </s:svg> </body></html>
- 当节点使用了命名空间前缀时,nodeName等于prefix+”:”+localName。
- 对于html元素来说,localName和tagName是“html”;namespaceURI是“http://ww.w3.org/1999/xhtml ” ;prefix是null。
- 对于元素而言,它的localName是“svg”;tagName是“s:svg”;namespaeURI是“http://www.w3.org/2000/svg ”;prefix是“s”。
- DOM3级再次基础上更进一步,又引入了下列与命名空间有关的方法。
- Document类型的变化
- 包含下列与命名空间有关的方法。
- 包含下列与命名空间有关的方法。
- Element类型的变化
- 新增方法如下
- 新增方法如下
- NamedNodeMap类型的变化
- 这些方法只针对特性使用。
- 这些方法只针对特性使用。
3,其他方面的变化
- 这些变化与XML命名空间无关,而是更倾向于确保API的可靠性及完整性。
DocumentType类型的变化
- 新增了3个属性:publicId、systemId、和internalSubset。
如下示例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml11/DTD/xhtmll-strict.dtd"[<!ELEMENT name(#PCDATA)>] >
- document.doctype.publicId是-//W3C//DTD XHTML 1.0 Strict//EN
- document.doctype.systemId是http://www.w3.org/TR/xhtml11/DTD/xhtmll-strict.dtd
- document.doctype.internalSubset是 <!ELEMENT name(#PCDATA)>
Document类型的变化
- importNode()方法
- 从一个文档中取得一个节点,导入另一个文档,成为另一个文档结构的一部分。
- 参数接收两个:要复制的节点和一个表示是否复制子节点的布尔值。
- 返回原来节点的副本。
“DOM2级视图”模块增加了一个名为defaultView的属性,指向拥有给定文档的窗口(或框架),除IE外所有浏览器都支持defaultView属性,IE支持一个等价的属性名parentWidow属性,要确定文档的归属窗口,可使用下列代码
var parentWindow = document.defaultView || document.parentWindow;
- “DOM2级核心”为document.implementation对象规定了两个方法:
- createDocumentType()和
- 创建一个新的DocumentType节点。
- 接收3个参数:文档类型名称,publicId,systemId
- createDocument()
- 接收3个参数:针对文档中元素的namespaceURI,文档元素的标签名,新文档的文档类型。
- createDocumentType()和
- “DOM2级HTML”也为document.implementation新增了一个方法,名叫createHTMLDocument()。这个方法的用途是创建一个完整的HTML文档,包括html,head,title,body元素,
- 接受一个参数:文档的标题
- importNode()方法
Node类型的变化
- isSupported()方法,与document.implementation引入的hasFeature()方法类似。
代码示例
if(document.body.isSupported("HTML","2.0")){ // 执行}
- DOM3级引入了两个辅助比较节点的方法
- isSameNode()
- 类型相同时返回true,反之false。
- isEqualNode()
- 引用相同节点时,返回true,否则返回false。
- isSameNode()
0 0
- JavaScript学习-DOM2和DOM3的变化
- JavaScript-DOM2和DOM3
- JavaScript高级程序设计之DOM2和DOM3之DOM 变化之其他方面的变化第12.1.2讲
- js学习小结(十)2014.5.10.11(DOM2和DOM3的变化,操作样式的DOM API(1))
- Javascript学习笔记之dom2&&dom3
- JavaScript基础——DOM2和DOM3
- JavaScript高级程序设计10--DOM2和DOM3
- JavaScript笔记:DOM2 & DOM3
- JavaScript高级程序设计之DOM2和DOM3之DOM 变化之针对XML命名空间的变化第12.1.1讲
- 第十二章:DOM2 和 DOM3(DOM变化)
- DOM2 和 DOM3
- js学习笔记:DOM2和DOM3(放弃……)
- JavaScript高级程序设计之DOM2和DOM3之样式之访问元素的样式第12.2.1讲
- 《JS高程(3)》DOM2和DOM3-DOM变化-第12章笔记(22)
- javascript DOM详解之DOM2与DOM3
- JS学习11(DOM2&DOM3)
- 第11章 DOM2 和 DOM3 (一)
- 第11章 DOM2 和 DOM3 (二)
- 算法导论基本数据结构
- Java异常处理机制以及try-catch-finally-return执行顺序
- 分页1-5之间跳转代码
- 我用Xamarin开发android应用,应用在真机上一打开就退出了
- servlet介绍
- JavaScript学习-DOM2和DOM3的变化
- 数据库系统概论学习攻略(第四期)
- bootstrapTable mergeCells
- c语言题目集合
- Java Socket 编程那些事(1)
- 短信猫实现短信验证小例子
- SpringBean的生命周期
- Hangman Judge- UVA 489
- 2017华东师范大学网络赛—F