Javascript高级编程学习笔记(49)—— DOM2和DOM3(1)DOM变化

时间:2022-05-14 13:55:10

DOM变化

我们知道DOM有许多的版本,其中DOM0和DOM2这两个级别以对事件的纳入标准而为人所知

但是呢,这里不讲事件,在后面会有专门和事件有关的部分作为详细讲解

这里就只讲一下DOM2和DOM3的背景来历

首先DOM1级主要定义的是HTML和XML文档底层的结构,DOM2和DOM3两个级别则主要致力于为文档引入更加丰富的交互能力

与此同时这两个版本也支持了更加高级的XML特性

首先DOM2分为了许多模块

如下所示:

1. DOM2级核心

2.DOM2级视图

3.DOM2级事件

4.DOM2级样式

5.DOM2级遍历和范围

6.DOM2级HTML

以上板块的内容在致力于拓展DOM API的同时也提供了更好的错误处理及特性检测的能力

这一目的在一定程度上意味着对命名空间的支持

而通过命名空间我们则可以在同一文档中混入不同的文档类型的代码

总的来说

DOM2没有引入新的类型而是在已有类型的基础上添加新的方法以增强现有类型的能力

而DOM3既增强了已有类型的能力,也引入了新的类型

下面我们来看看这些变化

Node类型的变化

在DOM2级中,Node类型包含以下特定于命名空间的属性

localName:不带命名空间前缀的节点名称

namespaceURI:命名空间的URI或者null(未指定的情况下)

prefix:命名空间前缀或者null(未指定的情况下)

PS.当节点使用了命名空间的时候,Node的 nodeName 则等于 prefix : localname

nodeName则相当于 tagName

以 <s:svg> 为例:nodeName为 s:svg  prefix为s localName为svg

在此基础上DOM3级则更进一步,引入了如下与命名空间有关的方法:

isDefaultNamespace(nameSpaceURI): 判断指定的URI是否为当前节点的默认命名空间

lookupNamespaceURI(prefix):返回给定前缀的命名空间

lookupPrefix(namespaceURI):返回给定namespaceURI的前缀

Document类型的变化

DOM2中 Document 类型包含了下列与命名空间有关的方法:

createElementNS(namespaceURI,tagName):创建属于namespaceURI命名空间的指定元素

createAttributeNS(namespaceURI,attributeName):创建属于namespaceURI命名空间的新特性

getElementsByTagNameNS(namespaceURI,tagname):返回属于指定命名空间的nodeList集合

只有当一个文档中存在多个命名空间时,以上方法才是必要的

Element类型的变化

新增操作特定命名空间特性的API

新增方法如下:

getAttributeNS(namespaceURI,localName):获取指定命名空间的指定特性

getAttributeNodeNS(namespaceURI,localName):取得指定命名空间的指定特性节点

hasAttributeNS(namespaceURI,localName):判断当前元素是否拥有属于指定命名空间的指定特性

removeAttributeNS(namespaceURI,localName):移除指定命名空间的指定特性

setAttributeNS(namespaceURI,localName,value):将指定命名空间的指定特性的值设置为value

setAttributeNodeNS(namespaceURI,attrnode):设置指定命名空间的指定特性节点为attrnode

NamedNodeMap类型的变化

同样的针对于特性节点的NamedNodeMap类型也提供了与命名空间相关的方法

getNamedItemNS(namespaceURI,localName):取得指定空间名为localName的项

removeNamedItemNS(namespaceURI,localName):移除指定空间名为localName的项

setNamedItemNS(node):添加已经事先设置命名空间的node

其它方面的变化

除了上述与命名空间相关的变化之外

DOM2、3还有以下变化:

1.DocumentType新增了三个属性:publicId、systemId、internalSubset  用于访问文档信息声明

2.importNode(要复制的节点,是否深拷贝):从一个文档中获取节点并导入另一个文档

3.document.implementation 添加了两个方法 createDocumentType、createDocument 用于创建文档以及创建文档类型声明

4.对Node添加 isSupported()方法,用于判断node是否实现了某一特性

5.isSameNode(node) 判断当前节点是否与Node相同

6.isEqualNode(node)判断当前节点是否与Node相等

7.setUserData(要设置的键,设置的值,处理函数)用于给DOM节点添加额外的数据属性

第三个参数的处理函数接收五个参数:操作类型的数值、数据键、数据值、源节点、目标节点   而这个处理函数将会在DOM节点被clone时调用,若不在处理函数中进行处理,那么克隆节点将不会复制节点数据

8.frame.contentDocument  指向表示框架内容的文档对象(该属性受同源策略的限制)

Javascript高级编程学习笔记(49)—— DOM2和DOM3(1)DOM变化的更多相关文章

  1. Javascript高级编程学习笔记(1)—— JS简介

    此系列文章,用于记录所学,如有错误欢迎指出. Javascript组成 1.核心(ECMAScript) 2.文档对象模型(DOM) 3.浏览器对象模型(BOM) 1.核心(ECMAScript) E ...

  2. Javascript高级编程学习笔记(58)—— 事件(2)事件处理程序

    事件处理程序 事件处理程序即响应某个事件的函数 事件处理程序以 “on” 开头 如“onclick”,“onload” HTML事件处理程序 某个元素支持的每种事件都可以使用一个与响应的事件处理程序同 ...

  3. 《JavaScript高级程序设计》笔记:DOM2和DOM3(十二)

    DOM1级主要定义的是HTML和XML文档的底层结构.DOM2级和DOM3级在这个结构基础上引入了更多的交互能力,也支持更高级的XML特性.为此DOM2级和DOM3级分为了很多的模块(模块直接具有某种 ...

  4. Javascript高级编程学习笔记(53)—— DOM2和DOM3(5)遍历

    遍历 “DOM2级遍历和范围” 定义了两个用于辅助完成顺序遍历的DOM结构类型 NodeIterator 和 TreeWalk 上述两种类型可以基于给定起点的DOM结构执行深度优先的遍历操作 对于检测 ...

  5. Javascript高级编程学习笔记(54)—— DOM2和DOM3(6)范围选择

    范围 为了让开发人员更加方便地控制页面“DOM2级遍历和范围”模块定义了“范围”接口 通过该接口开发人员可以选择文档中的一个区域,而不必考虑元素的界限 在常规操作不能有效地修改文档时,使用范围往往可以 ...

  6. Javascript高级编程学习笔记(52)—— DOM2和DOM3(4)元素大小

    在日常实践中,我们在使用JS的时候难免会需要获取元素的大小及位置 首先要声明的是,这一部分的内容并不属于DOM2样式规范,因为DOM中并没有对我们如何获取元素大小的相关信息做出规范 偏移量 偏移量及元 ...

  7. Javascript高级编程学习笔记(50)—— DOM2和DOM3(2)样式

    样式 在HTML中定义元素的方式有以下三种: 1.link标签引入外部样式表 2.style标签定义嵌入样式 3.通过JS中对style特性定义元素样式(行内样式) “DOM2级样式”围绕上述样式机制 ...

  8. Javascript高级编程学习笔记(56)—— DOM2和DOM3(8)低版本IE范围

    虽然IE9支持了DOM范围,但是IE8及更早版本并不支持DOM范围 所以IE8以下的更早版本的IE提出了与之类似的概念以供大家使用 也就是 文本范围 var range = document.body ...

  9. Javascript高级编程学习笔记(55)—— DOM2和DOM3(7)操作范围

    操作范围中的内容 在创建范围时,内部会为这个范围创建一个文档片段 范围所属的全部节点都会被添加到这个片段中 虽然选取范围可以不是完整的.良好的DOM结构 但是在这个为范围创建的文档片段中,会自己完缺少 ...

随机推荐

  1. Socket通信客户端设计(Java)

    public class Client extends JFrame implements Runnable{ private JPanel jPanel= new JPanel(); private ...

  2. Java数据结构和算法之哈希表

    五.哈希表 一般的线性表.树中,记录在结构中的相对位置是随机的即和记录的关键字之间不存在确定的关系,在结构中查找记录时需进行一系列和关键字的比较.这一类查找方法建立在“比较”的基础上,查找的效率与比较 ...

  3. SSAS:菜鸟笔记(二)定义计算(DMX脚本)

    基本概念 Calculation可以定义计算成员.名称集以及执行其他脚本命令来扩展分析服务立方(Analysis Service Cube)的功能. Calculation包含MDX以及脚本两个部分: ...

  4. ECHO is off

    执行 batch 脚本: @ECHO OFF @ECHO @ECHO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Alert !!!!!!!!!!!!!!!!!!!!!!! ...

  5. Node&period;js显示页面

    首先我们先要下载并安装Nodejs,然后进入Node.js中安装supervisor, npm -g install supervisor -g表示全局模式 (无论windows哪一个用户登陆都可以使 ...

  6. javascript 函数详解

    一.函数的一些基础概念: 1.js中的函数使用function来声明. 2.关于return: 2.1  函数在执行到return语句后悔立即停止并退出,return后面的代码永远不会得到执行: 2. ...

  7. Adobe RIA 开发工程师认证考试大纲

    AdobeRIA 开发工程师认证考试大纲 考题数量:共90道题,考试通过正确率:60% 考试时间:120分钟  试题种类:单选题.多选题和判断题     1. Adobe RIA基础知识(2道题)  ...

  8. Matlab小波工具箱的使用2

    Matlab小波工具箱的使用2 (2011-11-11 09:32:57) 转载▼ http://blog.sina.com.cn/s/blog_6163bdeb0102dw7a.html#cmt_5 ...

  9. Node&plus;GitLab实现小程序CI系统

    为什么要实现自动部署 小程序开发迭代里,有以下几个个头痛的问题, 如何准确并快速的的把小程序上传去后台,并让测试人员进行测试? 测试同事找开发要二维码,效率较低 本地生成的二维码会出现携带本地代码.未 ...

  10. ELK-WEB中文汉化和安全认证

    1.Kibana汉化方法此项目,适用于Kibana 5.x-6.x的任意版本,汉化过程不可逆 1)Github仓库下载kibana中文汉化包,下载指令如下: git clone https://git ...