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 相关文章推荐
jQuery select控制插件
Aug 17 Javascript
jquery 插件开发 extjs中的extend用法小结
Jan 04 Javascript
ExtJS的拖拽效果示例
Dec 09 Javascript
JavaScript通过select动态更换图片的方法
Mar 23 Javascript
JavaScript function函数种类详解
Feb 22 Javascript
JS仿百度自动下拉框模糊匹配提示
Jul 25 Javascript
JavaScript中常用的验证reg
Oct 13 Javascript
JS实现拖拽的方法分析
Dec 20 Javascript
JavaScript队列的应用实例详解【经典数据结构】
Apr 12 Javascript
React如何避免重渲染
Apr 10 Javascript
vue引用js文件的多种方式(推荐)
May 17 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
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
php Xdebug的安装与使用详解
2013/06/20 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
图解js图片轮播效果
2015/12/20 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
Python字符串替换实例分析
2015/05/11 Python
Python3结合Dlib实现人脸识别和剪切
2018/01/24 Python
TensorFlow变量管理详解
2018/03/10 Python
在python shell中运行python文件的实现
2019/12/21 Python
python实现邮件循环自动发件功能
2020/09/11 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
三方协议书范本
2014/04/22 职场文书
工程项目经理任命书
2014/06/05 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
2014年德育工作总结
2014/11/20 职场文书
2015年社区民政工作总结
2015/04/21 职场文书
大学校园招聘会感想
2015/08/10 职场文书
房屋买卖定金协议书
2016/03/21 职场文书