javascript触发模拟鼠标点击事件


Posted in Javascript onJune 26, 2019

事件触发器就是用来触发某个元素下的某个事件,IE下fireEvent方法,高级浏览器(chrome,firefox等)有dispatchEvent方法。

一般我们在元素上绑定事件后,是靠用户在这些元素上的鼠标行为来捕获或者触发事件的,或者自带的浏览器行为事件,比如click,mouseover,load等等,有些时候我们需要自定义事件或者在特定的情况下需要触发这些事件。这个时候我们可以使用IE下fireEvent方法,高级浏览器(chrome,firefox等)有dispatchEvent方法。

例如在ie下看看这个例子:

//document上绑定自定义事件ondataavailable
document.attachEvent('ondataavailable', function (event) {
alert(event.eventType);
});
var obj=document.getElementById("obj");
//obj元素上绑定click事件
obj.attachEvent('onclick', function (event) {
alert(event.eventType);
});
//调用document对象的createEventObject方法得到一个event的对象实例。
var event = document.createEventObject();
event.eventType = 'message';
//触发document上绑定的自定义事件ondataavailable
document.fireEvent('ondataavailable', event);
//触发obj元素上绑定click事件
document.getElementById("test").onclick = function () {
obj.fireEvent('onclick', event);
};

fireEvent的官方文档

createEventObject的官方文档

再看看高级浏览器(chrome,firefox等)的例子:

//document上绑定自定义事件ondataavailable
document.addEventListener('ondataavailable', function (event) {
alert(event.eventType);
}, false);
var obj = document.getElementById("obj");
//obj元素上绑定click事件
obj.addEventListener('click', function (event) {
alert(event.eventType);
}, false);
//调用document对象的 createEvent 方法得到一个event的对象实例。
var event = document.createEvent('HTMLEvents');
// initEvent接受3个参数:
// 事件类型,是否冒泡,是否阻止浏览器的默认行为
event.initEvent("ondataavailable", true, true);
event.eventType = 'message';
//触发document上绑定的自定义事件ondataavailable
document.dispatchEvent(event);
var event1 = document.createEvent('HTMLEvents');
event1.initEvent("click", true, true);
event1.eventType = 'message';
//触发obj元素上绑定click事件
document.getElementById("test").onclick = function () {
obj.dispatchEvent(event1);
};

在实际封装中没这么简单,看了一下jQuery.event.trigger的源码

是通过模拟来实现了,给某元素绑定一个事件处理函数,如果有触发事件的实际操作就会执行相应的事件处理函数,所以要达到事件触发器的功能只要获取到相应的事件处理函数然后执行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript去除空格的几种方法
Oct 03 Javascript
javascript内存管理详细解析
Nov 11 Javascript
jQuery中clone()方法用法实例
Jan 16 Javascript
纯JavaScript代码实现移动设备绘图解锁
Oct 16 Javascript
基于JavaScript短信验证码如何实现
Jan 24 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
Nov 23 Javascript
JS正则替换掉小括号及内容的方法
Nov 29 Javascript
jquery插件bootstrapValidator表单验证详解
Dec 15 Javascript
原生javascript实现文件异步上传的实例讲解
Oct 26 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
Sep 27 Javascript
react 原生实现头像滚动播放的示例
Apr 21 Javascript
利用js实现简易红绿灯
Oct 15 Javascript
JavaScript动态添加数据到表单并提交的几种方式
Jun 26 #Javascript
react koa rematch 如何打造一套服务端渲染架子
Jun 26 #Javascript
通过javascript实现段落的收缩与展开
Jun 26 #Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
Jun 26 #Javascript
Vue实现日历小插件
Jun 26 #Javascript
微信小程序入口场景的问题集合与相关解决方法
Jun 26 #Javascript
Vue组件实现触底判断
Jun 26 #Javascript
You might like
PHPShop存在多个安全漏洞
2006/10/09 PHP
php 各种应用乱码问题的解决方法
2010/05/09 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
javascript图像处理—仿射变换深度理解
2013/01/16 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
js 动态给元素添加、移除事件的实现方法
2016/07/19 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
2017/05/02 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
vue-router之nuxt动态路由设置的两种方法小结
2018/09/26 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
python输入错误密码用户锁定实现方法
2017/11/27 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
关于python3中setup.py小概念解析
2019/08/22 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
PyTorch安装与基本使用详解
2020/08/31 Python
Django自带的用户验证系统实现
2020/12/18 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
法雷奥SQA(electric)面试问题
2016/01/23 面试题
中学生打架检讨书
2014/02/10 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
网络工程专业大学生求职信
2014/10/01 职场文书
检讨书怎么写
2015/05/07 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
环保建议书作文500字
2015/09/14 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
2022/04/19 Java/Android