美文网首页
关于DOM和事件的几个整理

关于DOM和事件的几个整理

作者: 阿鲁提尔 | 来源:发表于2017-08-30 13:44 被阅读0次

DOM的发展历史

Document Object Model的历史可以追溯至1990年代后期微软与Netscape的“浏览器大战”,双方为了在JavaScriptJScript一决生死,于是大规模的赋予浏览器强大的功能。微软在网页技术上加入了不少专属事物,既有VBScriptActiveX、以及微软自家的DHTML格式等,使不少网页使用非微软平台及浏览器无法正常显示。DOM即是当时蕴酿出来的杰作。
Javascriptd的早期版本向程序员提供了查询和操控Web文档某些实际内容(主要是图像和表单)的手段。因为Javascript预先定义了“images”和“forms”等术语,我们才能像下面这样在JavaScript脚本里引用“文档中的第三个图像”或“文档中名为‘details’的表单”:

  document.imgages[2]
  document.forms['details']

现在的人们通常把这种试验性质的初级DOM称为“第0级DOM”(DOM Level 0)。在还未形成统一标准的初级阶段,“第0级DOM”的常见用途是翻转图片和验证表单数据。
Netscape和微软公司各自推出第四代浏览器产品以后,(Netscape Navigator 4发布于1997年6月,IE 4发布于1997年10月) ,DOM开始遇到麻烦,陷入困境。NN4和IE4浏览器使用的是两种不兼容的DOM。换句话说,虽然浏览器制造商的目标一样,但他们解决DOM问题时采用的办法却完全不同。
就在浏览器制造商以DOM为武器展开营销大战的同时,W3C不事声张的结合大家的优点推出了一个标准化的DOM。令人欣慰的是,Netscape、微软和其他一些浏览器制造商们还能抛开彼此的敌意而与W3C携手制定新的标准,并与1998年10月完成了“第一级DOM”(DOM Level1)

什么是DOM

文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口。在网页上,组织页面(或文档)的对象被组织在一个树形结构中,用来表示文档中对象的标准模型就称为DOM。

DOM的作用

"W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。"

W3C DOM 标准被分为 3 个不同的部分:
  • 核心 DOM - 针对任何结构化文档的标准模型
  • XML DOM - 针对 XML 文档的标准模型
  • HTML DOM - 针对 HTML 文档的标准模型
XML DOM 是:
用于 XML 的标准对象模型
用于 XML 的标准编程接口
中立于平台和语言
W3C 标准
XML DOM 定义了所有 XML 元素的对象和属性,以及访问它们的方法(接口)
换句话说:XML DOM 是用于获取、更改、添加或删除 XML 元素的标准。
HTML DOM 是:
HTML 的标准对象模型
HTML 的标准编程接口
W3C 标准
HTML DOM 定义了所有 HTML 元素的**对象和属性**,以及访问它们的方法(接口)。
换言之,HTML DOM 是关于如何获取、修改、添加或删除 HTML 元素的标准。

DOM 节点

根据 DOM,HTML 文档中的每个成分都是一个节点。
DOM 是这样规定的:

  • 整个文档是一个文档节点
  • 每个 HTML 标签是一个元素节点
  • 包含在 HTML 元素中的文本是文本节点
  • 每一个 HTML 属性是一个属性节点
  • 注释属于注释节点

DOM0级和DOM2级的区别

0级DOM

主要分为2个:

  • 一是在标签内写onclick事件
<input type="button" value="Click Here" onclick="alert('Clicked!');"/>
//直接写
<input type="button" value="Click Here" onclick="showMessage();" />
//调用 script 要写在前面
  • 二是在js写onlicke=function(){}函数
document.getElementById("myButton").onclick = function () {
    alert('thanks');
}

1级DOM

DOM级别1于1998年10月1日成为W3C推荐标准。1级DOM标准中并没有定义事件相关的内容,所以没有所谓的1级DOM事件模型。在2级DOM中除了定义了一些DOM相关的操作之外还定义了一个事件模型 ,这个标准下的事件模型就是我们所说的2级DOM事件模型

2级DOM

DOM2级事件定义了两个方法用于处理指定和删除事件处理程序的操作:

  • addEventListener
  • removeEventListener

所有的DOM节点都包含这两个方法,并且它们都接受三个参数:

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

addEventListener():可以为元素添加多个事件处理程序,触发时会按照添加顺序依次调用。
removeEventListener():不能移除匿名添加的函数。

<input id="btnClick" type="button" value="Click Here" />

<script type="text/javascript">
    var btnClick = document.getElementById('btnClick');

    var handler=function() {
        alert(this.id);
    }

    btnClick.addEventListener('click', handler, false);
    btnClick.removeEventListener('click', handler, false);
</script>

事件流

目前主要有三种模型

  • IE的事件冒泡:事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的元素
  • Netscape的事件捕获:不太具体的节点更早接收事件,而最具体的元素最后接收事件,和事件冒泡相反
  • DOM事件流:DOM2级事件规定事件流包括三个阶段,事件捕获阶段,处于目标阶段,事件冒泡阶段,首先发生的是事件捕获,为截取事件提供机会,然后是实际目标接收事件,最后是冒泡阶段
事件流

HTML常见事件

load:当页面完全加载后在window上触发,当图像加载完成后在img元素上触发,或当嵌入内容加载完成时,在object元素上触发
unload:页面完全卸载后在window上触发,或嵌入内容卸载后在object元素触发
select:用户选择文本框中的字符时触发
change:文本框焦点变化后其值改变时触发
submit:用户提交表单的时候触发
resize:窗口或框架大小变化的时候在window上触发
scroll:用户滚动带滚动条的元素时,在该元素上触发
focus:页面或元素获得焦点时在window及相应元素上触发
blur:页面或元素失去焦点时在window及相应元素上触发
beforeunload:页面卸载前在window上触发
mousewheel:不算HTML的,当用户通过鼠标滚轮与页面交互,在垂直方向滚动页面时触发

参考文献

相关文章

  • 关于DOM和事件的几个整理

    DOM的发展历史 Document Object Model的历史可以追溯至1990年代后期微软与Netscape...

  • DOM0和DOM2级事件简单理解

    关于DOM0 和DOM1级事件可以简单理解为:事件分为DOM 0级事件和Dom 2级事件,DOM2级事件也叫做事件...

  • DOM事件的工作原理

    导读:本文是teren对DOM事件知识点所做的进一步整理,整理资料主要参考DOM事件简介和饥人谷课件,如果对DOM...

  • 关于DOM和事件

    1.dom对象的innerText和innerHTML有什么区别? innerText是一个可写属性,返回元素内包...

  • 【React进阶系列】史上最全React事件机制详解

    框架总览 ? DOM事件流的三个阶段 ? 关于React事件的疑问? React事件绑定机制? React事件和原...

  • DOM事件探秘(2)事件类型

    DOM有不同的事件类型,按大类分有鼠标事件,键盘事件。根据《DOM事件探秘》文章,我们来做几个综合实例。 鼠标事件...

  • 3-6 DOM事件

    问题 DOM 事件的级别 DOM 事件模型(就是捕获和冒泡儿) DOM 事件流 描述DOM事件捕获的具体流程 Ev...

  • DOM事件

    DOM级别与DOM事件 DOM级别:DOM0级,DOM1级,DOM2级和DOM3级DOM事件:DOM0级事件处理,...

  • 深入理解DOM事件机制

    前言 本文主要介绍: DOM事件级别 DOM事件流 DOM事件模型 事件代理 Event对象常见的方法和属性 一、...

  • 关于DOM整理

    canvas的刮刮卡 奖品图是canvas的背景图, 绘制一个纯色Mark 通过ctx.globalComposi...

网友评论

      本文标题:关于DOM和事件的几个整理

      本文链接:https://www.haomeiwen.com/subject/gfvzdxtx.html