事件代表文档或浏览器窗口中某个有意义的时刻,JavaScript 与 HTML 的交互是通过事件实现的
页面行为(在 JavaScript 中定义)与页面展示(在 HTML 和 CSS 中定义)的 分离。

  • 17.1 事件流
    事件流描述了页面接收事件的顺序
  • 17.1.1 事件冒泡
    IE 事件流被称为事件冒泡,这是因为事件被定义为从最具体的元素(文档树中最深的节点)开始触 发,然后向上传播至没有那么具体的元素(文档)

    <!DOCTYPE html>
    <html>
    <head> <title>Event Bubbling Example</title>
    </head>
    <body> <div id="myDiv">Click Me</div>
    </body>
    </html>
    在点击页面中的<div>元素后,click 事件会以如下顺序发生:
    (1) <div>
    (2) <body>
    (3) <html>
    (4) document

    所有现代浏览器都支持事件冒泡

  • 17.1.2 事件捕获
    事件捕获的意思是最不具体的节 点应该最先收到事件,而最具体的节点应该最后收到事件。事件捕获实际上是为了在事件到达最终目标 前拦截事件。
    如果前面的例子使用事件捕获,则点击

    元素会以下列顺序触发 click 事件: (1) document (2)

    (3)body(4)div

    在事件捕获中,click 事件首先由 document 元素捕获,然后沿 DOM 树依次向下传播,直至到达 实际的目标元素
    通常建议使用事件冒泡。
    17.3 事件对象
    在 DOM 中发生事件时,所有相关信息都会被收集并存储在一个名为 event 的对象中。

    let btn = document.getElementById("myBtn");
    btn.onclick = function(event) { console.log(event.type); // "click"
    };
    btn.addEventListener("click", (event) => { console.log(event.type); // "click"
    }, false)

    所有事件对象都会包含下表列出的这些公共属性和方法。
    bubbles 布尔值 只读 表示事件是否冒泡
    addEventListener()方法来指定事件处理程序。与其他事件一样,事件处理程序会接 收到一个 event 对象。

    window.addEventListener("load", (event) => { console.log("Loaded!");
    }); 

    scroll 事件

    window.addEventListener("scroll", (event) => { if (document.compatMode == "CSS1Compat") { console.log(document.documentElement.scrollTop); } else { console.log(document.body.scrollTop); }
    });

    以上事件处理程序会在页面滚动时输出垂直方向上滚动的距离
    屏幕坐标 鼠标事件不仅是在浏览器窗口中发生的,也是在整个屏幕上发生的。可以通过 event 对象的 screenX 和 screenY 属性获取鼠标光标在屏幕上的坐标。

    let div = document.getElementById("myDiv");
    div.addEventListener("click", (event) => { console.log(`Screen coordinates: ${event.screenX}, ${event.screenY}`);
    }); 

第 17 章 事 件相关推荐

  1. 《游戏设计艺术(第2版)》——学习笔记(17)第17章 有种体验叫作故事

    <游戏设计艺术(第2版)>学习笔记(17) 第17章 有种体验叫作故事 故事/游戏的二象性 被动娱乐的迷思 梦想 事实 真实世界方法1:珍珠串 真实世界方法2:故事机 问题 问题1:好的故 ...

  2. java实现备忘录模式_设计模式之第17章-备忘录模式(Java实现)

    设计模式之第17章-备忘录模式(Java实现) 好男人就是我,我就是曾小贤.最近陈赫和张子萱事件闹得那是一个沸沸扬扬.想想曾经每年都有爱情公寓陪伴的我现如今过年没有了爱情公寓总是感觉缺少点什么.不知道 ...

  3. 【第17章】网络安全应急响应技术原理与应用( 软考: 信息安全工程师) --学习笔记

    第17章 网络安全应急响应技术原理与应用 17.1 网络安全应急响应概述 居安思危,思则有备,有备无患.网络安全应急响应是针对潜在发生的网络安全事件而采取的网络安全措施. 17.1.1 网络安全应急响 ...

  4. 第 17 章 垃圾回收器

    第 17 章 垃圾回收器 1.GC 分类与性能指标 1.1.垃圾回收器概述与分类 垃圾回收器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商.不同版本的JVM来实现. 由于JDK的版本处于 ...

  5. 【17】 强化学习 17章 前沿技术

    文章目录 名词 离轨策略 折扣过程 折扣系数 价值函数 广义策略迭代(4.6节)或者"行动器一评判器"算法 正文 17.1 广义价值函数和辅助任务 1.广义价值函数是什么? 2.辅 ...

  6. 【MySQL 第17章_其他数据库日志】

    第17章_其他数据库日志 1.MySQL支持的日志 1.1日志类型 1.2日志的弊端 2.慢查询日志(slow query log) 3.1问题场景 3.2 查看当前状态 3.3 启动日志 3.4 查 ...

  7. 构建之法 第三版 17 章 部分草稿

    构建之法 17 章 人,绩效和职业道德 (<构建之法> 第三版草稿) 2016/12/23 17.1 领导力 在软件开发过程中,有很多平等合作,但是也有上下之分的领导/被领导关系,即使都是 ...

  8. 第17章 脚本化CSS

    第17章 脚本化CSS CSS脚本化是网页交互效果的技术基础,使用CSS和JavaScript可以设计网页动画.利用脚本化CSS可以动态地改变HTML属性,如字体颜色.字体大小等,还可以用它设置和改变 ...

  9. CSS3秘笈第三版涵盖HTML5学习笔记13~17章

    第13章,构建基于浮动的布局 使用的是float(浮动)属性 注:float:none值将取消所有浮动,通常只用来取消元素中已经应用的浮动. 切记:不需要给正文的div设计宽度,即使设计成固定宽度也不 ...

最新文章

  1. Python使用matplotlib可视化散点图、可视化两个数值变量之间的关系(Scatter plot)
  2. 兰州办着眼大数据切实提升数据分析管理能力
  3. mybatis一级缓存命中条件
  4. 大量小文件存储提高效率要点详解
  5. Ghost安装之后,键盘出现字符出现乱码
  6. 如何解决Win11开始菜单无法固定的问题
  7. 为什么定义!doctype html表格高度变高,!DOCTYPE html声明下div高度100%的问题解决方法...
  8. spark中一些不是很有意义的数据结构
  9. Mac怎么预览html的网页效果,苹果Mac快速预览网页小技巧
  10. php计算昨天,php时间计算,明天,昨天,前天,上周,本周,上月等等
  11. Matplotlib 中文字体设置
  12. js判断移动端或是pc端
  13. STM32使用485接口通讯
  14. Reports empty tag body. The validation works in XML / JSP / JSPX / HTML/ XHT
  15. Openwrt 构建Hello ipk
  16. Zotero文献管理软件使用指南——入门篇
  17. NC21499-今天,你惹对象生气了吗(dfs)
  18. 苹果新系统很鸿蒙!iPad终于能写代码了,iPhone竟成异地恋神器 | WWDC 2021
  19. iTunes备份文件路径修改方法
  20. ionic学习(十一):页面下拉刷新(Refresher)

热门文章

  1. 玻纤效应对skew的影响(二)
  2. 进程(线程)间同步互斥问题(三) 熟睡的理发师问题
  3. 不同样本之间的相似性度量(Similarity Measurement)
  4. 【C++】【python】【kafka】使用C++调用python函数向kafka发送消息
  5. 执行应用程序或者加载动态库时出现: No such file or directory
  6. 游戏录屏软件哪个好?游戏录屏软件推荐
  7. python的roc曲线与阈值_浅谈ROC曲线的最佳阈值如何选取
  8. 6S管理的24个常用工具、10大要点
  9. 均匀分布rand 正态分布randn 二元高斯分布random的图形 (python实现)
  10. 【tensorflow】简单的Tensorflow手写识别体