博客
关于我
事件模型 dom0和dom2
阅读量:685 次
发布时间:2019-03-17

本文共 1569 字,大约阅读时间需要 5 分钟。

DOM 事件绑定指南

DOM0级事件

DOM0级事件是早期IE和Netscape开发的,主要用于HTML文档的事件处理。它支持简单的单事件监听。

写法一

可以直接将事件函数写在标签内:

写法二

也可以通过DOM方法添加事件:

btn.onclick = function() {    console.log('点击了!');};

事件参数

如果需要获取更多信息,可以使用event参数:

btn.onclick = function(event) {    console.log('点击了!');    console.log(event);};
  • event对象包含详细的屏幕坐标和参考坐标。
  • 使用event.srcElement可以获取被点击的DOM元素。
  • 其他属性可用以获取更多信息。

事件覆盖问题

当同一元素多次绑定同类事件时,会按最后一次绑定的事件执行:

btn.onclick = function() {    console.log('点击了—1');};btn.onclick = function() {    console.log('点击了—2');};

结果只会显示点击了—2

解决事件覆盖

可以通过调用函数来增加独立性:

function fn1() {    console.log('点击了—1');}function fn2() {    console.log('点击了—2');}btn.onclick = function() {    fn1.call(this);    fn2.call(this);};

DOM1级事件

DOM1级由W3C制定,主要用于HTML和XML文档,保留了Events对象的结构。

DOM2级事件

DOM2对DOM1的基础上扩展,增加了样式表对象模型和事件绑定API。其主要特点是支持addEventListener

常用写法

btn.addEventListener("click", function(event) {    console.log('点击了!');});

事件绑定参数

addEventListener的参数:

element.addEventListener(event, function, useCapture)
  • event:必填,事件名称字符串。
  • function:处理事件的函数。
  • useCapture:布尔值,默认false,表示事件是冒泡型。

给一个元素多次绑定同类事件

btn.addEventListener("click", function(event) {    console.log('点击了—1');});btn.addEventListener("click", function(event) {    console.log('点击了—2');});

事件执行顺序从前到后。

披破和捕获

  • 冒泡型(默认`):事件向上传播。
  • 捕获型useCapture=true):事件向下传播。

例子

以下结构:

点击

用冒泡型事件执行顺序:

  • 核内元素点击:点击了—d3
  • 中间的d2点击:点击了—d2
  • 外层的d1点击:点击了—d1
  • 用捕获型事件执行顺序:

  • 外层d1点击:点击了—d1
  • 中间的d2点击:点击了—d2
  • 核内d3点击:点击了—d3
  • 移除事件和阻止冒泡

    • 移除事件:removeEventListener()
    • 阻止冒泡:event.stopPropagation()(IE支持event.cancelBubble())。

    通过以上方法,可以在不同阶段对事件作出处理,提升交互体验。

    转载地址:http://bxrhz.baihongyu.com/

    你可能感兴趣的文章
    vue项目报错集合
    查看>>
    图片链接
    查看>>
    LINUX-WIFI无线接入的一些东西
    查看>>
    word文档手写字母总会大写问题
    查看>>
    Redis中的key
    查看>>
    juc-09-控制并发流程工具类
    查看>>
    第一节 docker安装
    查看>>
    Linux系统时间与硬件时间及时间同步
    查看>>
    Django静态文件的加载以及STATIC_URL、 STATIC_ROOT 、STATICFILES_DIRS的区别
    查看>>
    Spring 和 DI 依赖注入
    查看>>
    中序线索二叉树的遍历
    查看>>
    laravel server error 服务器内部错误
    查看>>
    Linux驱动实现GPIO模拟I2C读写操作
    查看>>
    iJ配置Maven环境详解
    查看>>
    仿QQ登陆界面
    查看>>
    什么题目的暂时还没想好
    查看>>
    N皇后问题解法(递归+回朔)
    查看>>
    面试题 08.01. 三步问题
    查看>>
    剑指 Offer 11. 旋转数组的最小数字
    查看>>
    word文档注入(追踪word文档)未完
    查看>>