JS--DOM0, DOM1, DOM2, DOM3事件的区别与详解

原文网址:JS–DOM0, DOM1, DOM2, DOM3事件的区别与详解_IT利刃出鞘的博客-CSDN博客

简介

说明

本文介绍JavaScript中DOM0, DOM1, DOM2, DOM3事件级别的含义及区别。

DOM介绍

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

        DOM脱胎于Netscape及微软公司创始的DHTML(动态HTML)。现在它已经成为表现和操作页面标记的真正跨平台、语言中立的方式。

DOM0

简介

        其实并没有一种标准叫“DOMLevel 0”,这只是DOM历史中的一个参照点。

Netscape Navigator 4和IE4分别发布于1997年的6月和10月发布的DHTML,它们是未形成标准的试验性质的初级阶段的DOM,这个DOM被公认为是DOM0。

DOM0的事件的特点:

  • 效率高
  • 兼容所有浏览器
  • 同一个元素的同一种事件只能绑定一个函数(后面的函数会覆盖前边的函数)

事件

写法

写法1:标签

<input type="button" onclick="alert(0);" />

写法2:JS

<script>
  var btn = document.getElementsByClassName('button');
  btn.onclick = function(){
    alert(0);
  }
</script>

清理dom0的事件

只需给该事件赋值为 null

<script>
  var btn = document.getElementsByClassName('button');
  btn.onclick = null;
</script>

DOM1

简介

官网

Document Object Model (DOM) Level 1 Specification

简介

        大家熟知的Node,document, document.createElement都是在DOM1级别定义的。

        1998年 10月DOM1级规范成为W3C的推荐标准,为基本的文档结构及查询提供了接口,专注于HTML文档和XML文档。

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

        每个节点都有nodeType属性,表示该节点的类型。

NodeType常量

NodeType常量值

说明

Node.ELEMENT_NODE

1

我们常量的div,san,input等等

Node.ATTRIBUTE_NODE

2

属性。

Node.TEXT_NODE

3

包含按字面解释的纯文本,也可能包含转义后的HTML字符

Node.CDATA_SECTION_NODE

4

CDATA区块

Node.ENTITY_REFERENCE_NODE

5

DOM4 规范中被移除

Node.ENTITY_NODE

6

DOM4 规范里被移除

Node.PROCESSING_INSTRUCTION_NODE

7

用于XML文档的 ProcessingInstruction (en-US) ,例如 <?xml-stylesheet … ?> 声明

Node.COMMENT_NODE

8

注释

Node.DOCUMENT_NODE

9

表示整个HTML页面

Node.DOCUMENT_TYPE_NODE

10

文档类型(doctype)信息。

Node.DOCUMENT_FRAGMENT_NODE

11

文档片段。性能优化常用。

Node.NOTATION_NODE

12

DOM4 规范中被移除

事件

DOM1一般只有设计规范没有具体实现。

DOM2

简介

说明官网
DOM2级核心(DOMLevel2 Core)

为节点添加了更多方法和属性。

例如 importNode, createElementNS, createAttributeNS, getElementsByTagNameNS

getElementById等等

DOM-Level-2-Core Overview , DOM-Level-2-CoreDOM-Level-2-Core Changes

DOM2级视图

(DOM Level2 Views)

为文档定义了基于样式信息的不同视图。

常用的就是document.defaultView,其返回文档所在的Window。

Document Object Model (DOM) Level 2 ViewsSpecification

DOM2 级事件

(DOM Level2 Events)

说明了如何使用事件与 DOM文档交互。

常用的是 addEventListner, 基于EventTarget的整个事件系统都是DOM2定义的。

Document Object Model (DOM) Level 2 EventsSpecification

DOM2级样式

(DOM Level 2 Style)

定义了如何以编程方式来访问和改变 CSS 样式信息。

比如常见 CSSStyleDeclaration 和CSSStyleSheet。

document.body.style返回的就是CSSStyleDeclaration.

Document Object Model (DOM) Level 2 StyleSpecification
DOM2级遍历和范围(DOM Level2Traversal and Range)

引入了遍历 DOM文档和选择其特定部分的新接口。

比如: createTreeWalker 与 createNodeIterator 这两个节点遍历方法

Document Object Model (DOM) Level 2 Traversal and RangeSpecification
DOM2级HTML(DOMLevel2HTML)

扩展了 DOM Level 2 Core API [ DOM Level 2 Core ] ,以描述特定于 HTML 文档[ HTML 4.01]和 XHTML 文档[ XHTML 1.0]的对象和方法。
一般来说,操作层次化文档结构、元素和属性所需的功能将在核心部分中找到; 依赖于 HTML 中定义的特定元素的功能将在本部分中找到。

HTMLOptionsCollection就是新增的,就是<option>节点的集合。DOMImplementation 接口的 hasFeature也是。

Document Object Model (DOM) Level 2 HTMLSpecification

事件

说明

  1. 绑定事件:addEventListener(event, function, useCapture)
  2. 清除事件:removeEventListener(event, function, useCapture)
  3. 同一个元素的同种事件可以绑定多个函数,按照绑定顺序执行

        IE下的DOM2事件通过attachEvent绑定和 detachEvent 进行移除事件,他们接收的参数都一样。事件执行过程以及写法有所不同。IE9及之后的版本都能兼容 addEventListener了。

addEvenetListener()、removeEventListener() 有三个参数:

第一个参数:事件名(如click, IE是 onclick);
第二个参数:事件处理程序函数;
第三个参数:true则表示在捕获阶段调用,false表示在冒泡阶段调用。

示例

<div id="box">点我</div>
<script>
 	var box = document.getElementById('box');
	box.addEventListener('click', fun1, false);
	box.addEventListener('click', fun2, false);
	function fun1() {
		console.log('方法1');
	}
	function fun2() {
		console.log('方法2');
	}
	// 执行方法1		
    // 执行方法2
    box.removeEventListener('click', fun2, false);
</script>

DOM3

简介

在DOM3中引入了以下模块:

  1. DOM加载和保存模块(DOM Load and Save):引入了以统一方式加载和保存文档的方法
  2. DOM验证模块(DOM Validation):定义了验证文档的方法
  3. DOM核心的扩展(DOM Style):支持XML 1.0规范,涉及XML Infoset、XPath和XML Base

另外,DOM3级事件在DOM2级事件的基础上添加了更多的事件类型

事件

        DOM3级事件在DOM2级事件的基础上添加了更多的事件类型。

        DOM3级也允许开发人员自定义事件。

DOM3级事件添加的事件类型如下:

事件类型

说明

举例

UI事件

当用户与页面上的元素交互时触发

load、scroll

焦点事件

当元素获得或失去焦点时触发

blur、focus

鼠标事件

当用户通过鼠标在页面执行操作时触发

dbclick、mouseup

滚轮事件

当使用鼠标滚轮或类似设备时触发

mousewheel

文本事件

当在文档中输入文本时触发

textInput

键盘事件

当用户通过键盘在页面上执行操作时触发

keydown、keypress

合成事件

当为IME(输入法编辑器)输入字符时触发

compositionstart

变动事件

当底层DOM结构发生变化时触发

DOMsubtreeModified

DOM4

2015年11月19日, DOM4发布,详情可参见:W3C DOM4

DOM4增加了 Mutation Observers ,作为原来 Mutation Events的替代。 

    原文作者:IT利刃出鞘
    原文地址: https://blog.csdn.net/feiying0canglang/article/details/122274229
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞