JavaScript 事件流、事件处理程序及事件对象总结

下面给出关于 JavaScript 事件流、事件处理程序及事件对象总结的详细攻略。

1. 事件流

事件流描述的是从页面中接收事件的顺序,分为三个阶段:

  • 捕获阶段:事件从最外层的容器开始向下传递到目标元素。
  • 目标阶段:事件到达目标元素。
  • 冒泡阶段:事件从目标元素开始向上冒泡到最外层的容器。

在标准 W3C 的事件模型中,事件传递的顺序是从上往下的(捕获阶段)、到达目标元素(目标阶段)再向上冒泡(冒泡阶段)。而在 IE 浏览器中事件传递的顺序是从下往上的(事件冒泡),直到最外层的容器。

2. 事件处理程序

事件处理程序是处理特定事件的函数。可以通过 DOM 或 HTML 属性将事件处理程序指定给元素。最常见的方式是使用 HTML 属性:

<button onclick="alert('Clicked!')">Click me</button>

也可以使用 DOM 方法:

const button = document.getElementById('myBtn');
button.onclick = function() {
  alert('Clicked!');
};

使用 addEventListener() 方法动态注册:

const button = document.getElementById('myBtn');
button.addEventListener('click', function() {
  alert('Clicked!');
});

除了添加较多的灵活性外,通过使用 addEventListener() 也可以为同一元素的同一事件添加多个处理程序。

3. 事件对象

在事件处理程序内部,可以访问事件对象 event。事件对象包含与事件相关的所有信息,例如事件类型、目标元素、鼠标的位置等。

以下是一个鼠标点击事件对象的示例:

function handleClick(event) {
  console.log(event.type); // 'click'
  console.log(event.target); // the element that was clicked on
  console.log(event.clientX); // the x coordinate of the mouse pointer when the event occurred
  console.log(event.clientY); // the y coordinate of the mouse pointer when the event occurred
}

示例1 - 点击按钮时改变背景颜色

<button id="myBtn">Change Color</button>
const button = document.getElementById('myBtn');
button.addEventListener('click', function(event) {
  document.body.style.background = 'green';
});

点击按钮后,网页的背景色会改变为绿色。

示例2 - 阻止浏览器默认行为

<a href="https://www.baidu.com" id="myLink">百度</a>
const link = document.getElementById('myLink');
link.addEventListener('click', function(event) {
  event.preventDefault();
  alert('Link clicked!');
});

点击链接后,会弹出一个提示框,同时不会跳转到百度网站。可以看到,我们在事件处理程序内部使用了 preventDefault() 方法来阻止默认行为的发生。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript 事件流、事件处理程序及事件对象总结 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • js前端解决跨域的八种实现方案

    下面是详细的“js前端解决跨域的八种实现方案”的攻略。 什么是跨域 浏览器出于安全考虑,不允许跨域访问数据。例如,a.com下一个网页,可以轻松访问a.com下其他网页中的数据。但是,如果想要访问b.com下的数据,就需要进行跨域访问。跨域指的是指向不同域名的请求。比如,不同域名之间的交互访问就算是跨域访问。 前端跨域解决方案 1. JSONP JSONP(…

    JavaScript 2023年5月27日
    00
  • JavaScript通过字符串调用函数的实现方法

    JavaScript可以通过字符串调用函数的方法称为函数调用方法,也就是将字符串转化成函数名称并直接调用对应的函数。下面是一些实现方法的示例说明: 1. 使用eval()函数实现字符串调用函数 使用eval()函数可以将字符串解析成JS代码并执行,从而实现字符串调用函数的方法。 // 定义需要调用的函数 function greeting(message) …

    JavaScript 2023年5月28日
    00
  • 前端vue按1920*1080设计图的页面适配屏幕缩放并适配4K屏详解

    前端vue按1920*1080设计图的页面适配屏幕缩放并适配4K屏详解 在vue前端开发中,实现页面屏幕适配非常重要,你需要让你的网站在不同的屏幕上都能够正常显示,无论是普通的屏幕还是4K屏幕。本攻略将提供实现此目标的方法。 1. 页面设计 为了实现一个自适应的vue页面,你需要先将页面设计成1920*1080的尺寸,这是一个通用的页面尺寸。这个设计尺寸将帮…

    JavaScript 2023年6月11日
    00
  • 正则表达式的高级技巧分享

    正则表达式的高级技巧分享 1. 回溯引用 1.1 什么是回溯引用 回溯引用,也叫做后向引用,它允许使用已经匹配的子表达式来匹配一个字符串的其他部分。引用的数量是通过一个数字来实现的,该数字表示需要引用的子表达式的数量。 1.2 示例说明 假设我们有一个字符串,它包含多个单词之间用逗号隔开,如下所示: Tom,Lily,Cindy,Bob,Adam 假设我们要…

    JavaScript 2023年6月10日
    00
  • 用正则表达式 动态创建/增加css style script 兼容IE firefox

    动态创建或增加 CSS 和 JS 很常见,特别是要在特定条件下加载代码时。一种常用的方式是使用 JavaScript 和 DOM 操作来实现这个功能,但使用正则表达式来完成这个任务也是一种更加高效、可靠和优雅的方法。 以下是使用正则表达式动态创建/增加 CSS 和 JavaScript 的完整攻略: 用正则表达式动态添加 CSS 动态添加 CSS 通常是为了…

    JavaScript 2023年6月10日
    00
  • 聊聊JavaScript中.?、??、??=的用法以及含义

    当我们在JavaScript中使用对象或者变量时,可能会出现有些属性或者变量是未定义的情况,这时就会用到JavaScript中的三个操作符: . 、?. 、??和??=。下面我将分别详细讲解它们的用法和含义。 . 访问对象属性 首先让我们看下JavaScript中最基本的 . 操作符。这个操作符用于访问对象的属性。例如: const person = { n…

    JavaScript 2023年5月18日
    00
  • JSON中key动态设置及JSON.parse和JSON.stringify()的区别

    JSON中key动态设置指的是在JavaScript中向JSON对象动态添加属性名(key),这样的JSON对象在另一个需要使用这些属性的函数或者方法中外部作用域仍然可以进行访问。但在正常情况下,我们无法使用字符串拼接的方式来动态设置JSON中的key,这时候就需要借助ES6中的计算属性名(Computed Property Names)来实现。 计算属性名…

    JavaScript 2023年5月27日
    00
  • 禁止iframe页面的所有js脚本如alert及弹出窗口等

    针对禁止iframe页面的所有JS脚本如alert及弹出窗口等,我们可以通过以下几种方法实现: 使用X-Frame-Options响应头 X-Frame-Options是一种HTTP响应头,在浏览器不允许在页面内嵌套其他网站时可以使用。该头部允许网站所有者控制页面如何在其他站点的iframe中呈现。 一个简单的例子如下: HTTP/1.1 200 OK Co…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部