首页 > 编程 > Python > 正文

JavaScript中的模拟事件和自定义事件实例分析

2020-02-15 22:33:45
字体:
来源:转载
供稿:网友

本文实例讲述了JavaScript中的模拟事件和自定义事件。分享给大家供大家参考,具体如下:

前面介绍了JavaScript中为事件指定处理程序的五种方式和JavaScript的事件对象event。

下面介绍JavaScript中的模拟事件和自定义事件。

1、DOM中的事件模拟

1) DOM中的事件模拟有以下3个步骤:

步骤1:创建事件对象event

可以在document对象上使用createEvent()方法创建event对象,此方法接收一个参数,即要创建的事件类型的字符串。在DOM2级中这些字符串都使用英文复数形式,而在DOM3级中都变成了单数。这个字符串可以是以下几个字符串之一:

① UIEvents:一般化的UI事件,鼠标事件和键盘事件都继承自UI事件,DOM3级中是UIEvent;

② MouseEvents:一般化的鼠标事件,DOM3级中是MouseEvent;

③ MutationEvents:一般化的DOM变动事件,DOM3级中是MutationEvent;

④ HTMLEvents:一般化的HTML事件,没有对应的DOM3级事件,被分散到 其他类别中。

步骤2:初始化事件对象

使用与事件有关的信息对其进行初始化,每种类型的event对象都有一个特殊的方法,为它传入适当的数据就可以初始化该event对象,不同类型的方法的名字也不相同,具体要取决于createEvent()中使用的参数。

步骤3:触发事件

使用dispatch()方法,此方法接收一个参数,即要触发事件的event对象。

2) 模拟鼠标事件:

使用createEvent()方法创建event对象,传入字符串"MouseEvents",返回的对象有一个名为initMouseEvent()方法,用于指定与该鼠标事件有关的信息。

模拟按钮的单击事件:

var btn = document.getElementsByTagNames("button")[0];var event = document.createEvent("MouseEvents");event.initMouseEvent("click", true, true, document.defaultView, 0, 0, 0, 0, 0, false, false, false, 0, null);btn.dispatchEvent(event);

3) 模拟键盘事件:

使用createEvent()方法创建event对象,传入字符串"KeyboardEvent",返回的对象有一个名为initKeyboardEvent()方法。

DOM2级事件并没有专门规定键盘事件,后来的DOM3级事件才正式将其作为一种事件给出规定。IE9是目前唯一支持DOM3级键盘事件的浏览器,但其他浏览器也可以模拟键盘事件。

在使用createEvent()方法之前,需要先检测浏览器是否支持DOM3级事件。

模拟按住Shift的同时又按下A键:

var text = document.getElementsByTagNames("input")[0];if (document.implementation.hasFeature("KeyboardEvents", 3.0) {  var event = document.createEvent("KeyboardEvent");  event.initKeyboardEvent("keydown", true, true, document.defaultView, "a", 0, "Shift", 0);}text.dispatchEvent(event);            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表