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操纵Cookie实现购物车程序
Nov 23 Javascript
JavaScript 浮点数运算 精度问题
Oct 06 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
Dec 10 Javascript
详解JavaScript 中的 replace 方法
Jan 01 Javascript
微信小程序实现下拉刷新和轮播图效果
Nov 21 Javascript
js读取本地文件的实例
Dec 22 Javascript
jQuery 改变P标签文本值方法
Feb 24 jQuery
Vue中使用方法、计算属性或观察者的方法实例详解
Oct 31 Javascript
node.js中事件触发器events的使用方法实例分析
Nov 23 Javascript
Angular单元测试之事件触发的实现
Jan 20 Javascript
JS实现长图上下滚动效果
Mar 19 Javascript
详解Javascript实践中的命令模式
May 05 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
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
PHP缓存机制Output Control详解
2014/07/14 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
jquery获取节点名称
2015/04/26 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
web前端页面生成exe可执行文件的方法
2018/02/08 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
Django rest framework实现分页的示例
2018/05/24 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
Python requests模块cookie实例解析
2020/04/14 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
函授本科自我鉴定
2013/11/03 职场文书
受欢迎的大学生自我评价
2013/12/05 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
电视节目策划方案
2014/05/16 职场文书
婚纱店策划方案
2014/05/22 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
python 爬取吉首大学网站成绩单
2021/06/02 Python