web前端Web前端之路让前端飞

DOM模型

2017-10-03  本文已影响21人  FWHeart

DOM模型

DOM(文档对象模型)是针对HTML和XML的一个API,DOM描绘了一个层次化的节点树,允许开发人员添加、移除和修改页面某一部分。

IE中的所有DOM对象都是以COM对象(Component Object Model,组件对象模型)的形式实现的。因此,IE中的DOM对象与原生JavaScript对象的行为或活动特点并不一致。

Node

DOM1级规定了Node接口,12种节点类型都继承自该接口。但是在IE中无法访问到Node类型。

节点类型

Node常见的属性:

Node常见的方法:

注意NodeList对象可以通过下标访问,也具有length属性,但并非Array的实例。DOM结构的变化能自动反映在NodeList对象中。

//将NodeList转换为数组
function convertToArray(nodes){
    var array = null;
    try{
        array = Array.prototype.slice.call(nodes,0);
    }catch(ex){
        array = new Array();
        for(var i=0,len=nodes.length;i<len;i++){
            array.push(nodes[i]);
        }
    }
    return array;
}

Document

document对象是HTMLDocument继承自Document类型)的一个实例,表示整个HTML页面,是window对象的一个属性

document常见属性:

特殊集合,这些集合都是HTMLCollection对象

HTMLCollection具有namedItem方法,可以根据name属性获得值

var imgs = document.getElementsByTagName("img");
imgs.namedItem("firstImg");
//获得name属性值为firstImg的元素(只返回一个),等价于
imgs["firstImg"];

document常见方法:

将domain设置为相同,内外两个页面就可以相互操作。设置domain只能设置为更简短,不能设置为更长。例如:将www.xwork.comp2p.xwork.com 都设置为 xwork.com 两个页面就能互相操作。

Element类型

Element类型用于表现XML或HTML元素,提供了对元素标签名、子节点及特性的访问。所有HTML元素都由HTMLElement类型表示,不是直接通过这个类型,也是通过它的子类型来表示。

每个HTML元素都存在的标准特性

常见方法:

Text

文本节点由Text类型标识,包含的是可以照字面解释的纯文本内容。文本节点中保存的字符会经过编码,像><&字符会被转义。

常见方法:

Comment

Comment代表注释节点,可以通过nodeValue或data取得值。拥有Text相同的字符串操作方法,除了splitText之外。

CDATASection

CDATASection只针对XML文档,表示的是CDATA区域。继承自Text,也是具有除splitText()之外的所有字符串操作方法。

DocumentType

DOM1级中,DocumentType对象不能动态创建,只能通过解析文档代码的方式来创建。支持的浏览器会把它保存在document.doctype中。

DocumentFragment

DOM规定文档片段(document fragment)是一种”轻量级”的文档,可以包含和控制节点,但不会像完整的文档那样占用额外的资源,在文档中没有对应的标记。

可以将文档片段作为一个”仓库”来使用,可以将文档仓库中的文档节点一次性添加到文档的标签中,避免重复渲染。一个节点不能同时存在于文档片段和文档中。

Attr

元素的特性在DOM中以Attr类型表示。

HTML5 DOM扩展

专有DOM扩展

强制IE浏览器以特定的模式渲染页面<meta http-equiv=”X-UA-Compatible” content=”IE=IEVersion”>

IEVersion值.png

各级DOM

DOM0

JavaScript在早期版本中提供了查询和操作Web文档的内容API(如:图像和表单),在JavaScript中定义了定义了'images'、'forms'等

document.images[0]
document.forms['user']

这实际上是未形成标准的试验性质的初级阶段的DOM,现在习惯上被称为DOM0,即:第0级DOM。DOM0在W3C进行标准备化之前出现,还处于未形成标准的初期阶段

DOM1

DOM1级主要定义了HTML和XML文档的底层结构。在DOM1中,DOM由两个模块组成:DOM Core(DOM核心)和DOM HTML。其中,DOM Core规定了基于XML的文档结构标准,通过这个标准简化了对文档中任意部分的访问和操作。DOM HTML则在DOM核心的基础上加以扩展,添加了针对HTML的对象和方法,如:JavaScript中的Document对象

DOM2与DOM3

在DOM1的基础上DOM2和DOM3引入了更多的交互能力,也支持了更高级的XML特性。DOM2和DOM3将DOM分为更多具有联系的模块。DOM2级在原来DOM的基础上又扩充了鼠标、用户界面事件、范围、遍历等细分模块,而且通过对象接口增加了对CSS的支持。DOM1级中的DOM核心模块也经过扩展开始支持XML命名空间。在DOM2中引入了下列模块,在模块包含了众多新类型和新接口:

DOM3进一步扩展了DOM,在DOM3中引入了以下模块:

参考文献

JS高程(第三版)
使用document.domain实现跨域
MDN HTMLCollection
MDN Element
DOM产生与发展

上一篇下一篇

猜你喜欢

热点阅读