JS DOM编程笔记 |
您所在的位置:网站首页 › 点击事件js › JS DOM编程笔记 |
这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战 在JavaScript中绑定的点击、键盘等事件,如果要触发它,需要用户手动去触发它。 今天我们将通过代码的方式来触发这些事件。 我们将会用到Event 构造函数和 element.dispatchEvent()方法。 使用代码来生成事件的步骤如下: 首先用Event 构造函数创建一个新的 Event 对象。 然后,使用 dispatchEvent() 方法触发事件。 Event 构造函数使用Event 构造函数来创建一个新事件: let event = new Event(type, [,options]); 复制代码Event 构造函数接受两个参数: type指定事件类型,比如click。 options为对象类型,有两个属性: bubbles:为布尔值,表示事件是否冒泡。如果为true,则事件冒泡,反之亦然。 cancelable:也是布尔值,表示事件是否可以取消,如果为true,则可以取消,反之亦然。 默认options对象为: { bubbles: false, cancelable: false} 复制代码下面我使用默认的options创建了一个点击事件 let clickEvent = new Event('click'); 复制代码 dispatchEvent 方法创建完事件后,我们就可以使用dispatchEvent() 方法在目标元素上触发它,像这样 element.dispatchEvent(event); 复制代码下面我在一个页面中来测试它: 测试dispatchEvent()方法 let btn = document.querySelector('.btn'); btn.addEventListener('click', function () { alert('点击了'); }); let clickEvent = new Event('click'); btn.dispatchEvent(clickEvent); 复制代码点击此处查看在线示例: codepen.io/cmdfas-the-… 在上面的例子中,我们不用手动点击按钮就会触发事件监听程序,就像我们点击了按钮一样。 那么我们如何区分事件是由用户触发还是代码触发呢? 问的好,如果事件来自用户操作,则 event.isTrusted 属性为 true。如果事件由代码触发,则 event.isTrusted 为 false。 所以,我们可以通过判断 event.isTrusted 属性的值来确定事件是否由用户触发。 Event 是 UIEvent 的父类,UIEvent 是其他特定事件类型的父类,例如 MouseEvent、TouchEvent、FocusEvent 和 KeyboardEvent。 我们最好使用 MouseEvent 这样的详细事件构造函数而不是通用的 Event 构造函数,因为这些构造函数提供了更多特定于事件的信息。 例如,MouseEvent 事件有许多其他属性,例如 clientX 和 clientY,它们指定事件发生时相对于视口的水平和垂直坐标: let clickEvent = new MouseEvent("click", { bubbles: true, cancelable: true, clientX: 150, clientY: 150 }); 复制代码下面链接展示了MouseEvent的全部属性: www.w3.org/TR/uievents… 总结我可以使用特定的事件构造函数(例如 MouseEvent)并在元素上调用 dispatchEvent() 方式手动触发事件。 通过使用 event.isTrusted 判断事件是由代码还是用户触发。 一起学习更多前端知识,微信搜索【小帅的编程笔记】,每天更新 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |