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

yizhihongxing

下面给出关于 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日

相关文章

  • JAVASCRIPT对象及属性

    JAVASCRIPT 对象及属性攻略 什么是JAVASCRIPT对象? JavaScript 对象 通常是指“拥有属性和方法的数据”。一个 JavaScript 对象可以被创建为一个单独的对象,但也可以通过构造函数来创建多个对象。每一个 JavaScript 对象都包含了键值对。 对象属性通常是一些字符串,也被称为对象的键。它们与键相关联的值可以是任何数据类…

    JavaScript 2023年5月27日
    00
  • Vue 禁用浏览器的前进后退操作

    要禁用浏览器的前进后退操作,可以使用Vue-Router提供的Navigation Guards对用户的操作进行拦截。 具体实现步骤如下: 1. 在Vue-Router中使用Navigation Guards 在new VueRouter的时候,我们可以添加beforeEach函数,该函数会在每次路由切换之前调用。我们可以在该函数中进行拦截判断。 示例代码如…

    JavaScript 2023年6月11日
    00
  • JS公共小方法之判断对象是否为domElement的实例

    接下来我将为大家详细讲解JS公共小方法之判断对象是否为domElement的实例的完整攻略,包含以下几个部分: 介绍如何判断对象是否为domElement的实例 提供两条示例说明 总结 1. 判断对象是否为domElement的实例 在JavaScript中,有时候我们需要判断一个对象是否为DOM元素的实例。这是因为DOM元素是一种独特类型的对象,它们是浏览…

    JavaScript 2023年6月10日
    00
  • 纯javascript前端实现base64图片下载(兼容IE10+)

    为了实现纯javascript前端实现base64图片下载,我们需要按照以下步骤进行操作: 1. 将base64数据转换为Blob格式 Base64是一种将二进制数据编码成文本数据的方法,而Blob是一种数据对象集合,表示一个不可变、原始数据的类似文件对象的实体。 我们可以通过以下代码将base64数据转换为Blob格式: function base64To…

    JavaScript 2023年6月11日
    00
  • 让你5分钟掌握9个JavaScript小技巧

    下面我就来详细讲解“让你5分钟掌握9个JavaScript小技巧”的完整攻略。 1. 变量值交换 有一种交换变量值的另类写法,可以用解构赋值完成: let a = 1; let b = 2; [a, b] = [b, a]; console.log(a) //输出2 console.log(b) //输出1 2. 使用扩展运算符复制数组 扩展运算符(spre…

    JavaScript 2023年5月17日
    00
  • js定义类的方法示例【ES5与ES6】

    下面是关于“js定义类的方法示例【ES5与ES6】”的完整攻略。 什么是类 在Javascript中,类是一种实现面向对象编程的方式。类定义了一个对象的特征和行为。类是一种模板或者蓝图,可用于创建一个具有相同属性和方法的多个对象。 ES5中定义类 在ES5中,我们使用构造函数来定义一个类。 function Person(name, age) { this.…

    JavaScript 2023年5月27日
    00
  • JavaScript的Object.defineProperty详解

    JavaScript的Object.defineProperty详解 什么是Object.defineProperty? Object.defineProperty() 是 JavaScript 中用于定义对象属性的一个函数。这个函数允许我们定义一个新属性或者修改一个已有属性,实现更高度的灵活性。 语法 Object.defineProperty(obj, …

    JavaScript 2023年6月11日
    00
  • javascript 模拟坦克大战游戏(html5版)附源码下载

    让我来详细讲解一下“javascript 模拟坦克大战游戏(html5版)附源码下载”的完整攻略。首先,这个游戏是使用html5和javascript开发的,所以我们需要了解一些前端基础知识。 1. 技术要求 HTML5 Javascript CSS 2. 游戏介绍 这个游戏是一款双人对战的坦克大战游戏,支持键盘操作。游戏的地图分为草地、钢铁墙和河流三种地形…

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