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 相关文章推荐
Js如何判断客户端是PC还是手持设备简单分析
Nov 22 Javascript
浅析Javascript使用include/require
Nov 13 Javascript
JavaScript访问字符串中单个字符的两种方法
Jul 03 Javascript
Bootstrap每天必学之表单
Nov 23 Javascript
bootstrap实现弹窗和拖动效果
Jan 03 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
Jun 24 Javascript
详解javascript事件绑定使用方法
Oct 20 Javascript
JS中Array数组学习总结
Jan 18 Javascript
一文了解vue-router之hash模式和history模式
May 31 Javascript
JavaScript中的this原理及6种常见使用场景详解
Feb 14 Javascript
关于Vue中的options选项
Mar 22 Vue.js
微前端qiankun改造日渐庞大的项目教程
Jun 21 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
php配置php-fpm启动参数及配置详解
2013/11/04 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
2019/12/13 PHP
jquery ajax提交表单数据的两种方式
2009/11/24 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
Nodejs搭建wss服务器教程
2017/05/24 NodeJs
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
vue编写简单的购物车功能
2021/01/08 Vue.js
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
PyTorch预训练的实现
2019/09/18 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
2020/12/04 Python
计算机应用与科学个人的自我评价
2013/11/15 职场文书
公司中秋节活动方案
2014/02/12 职场文书
国培远程培训感言
2014/03/08 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
会计电算化实训报告
2014/11/04 职场文书
安全员岗位职责
2015/02/10 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
面试通知单大全
2015/04/20 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
《检阅》教学反思
2016/02/22 职场文书
MySQL创建管理KEY分区
2022/04/13 MySQL