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代码
Aug 09 Javascript
JQueryEasyUI datagrid框架的进阶使用
Apr 08 Javascript
jquery操作checkbox实现全选和取消全选
May 02 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
Dec 10 Javascript
jquery判断复选框是否被选中的方法
Oct 16 Javascript
javascript实现计时器的简单方法
Feb 21 Javascript
RGB和YUV 多媒体编程基础详细介绍
Nov 04 Javascript
SelecT下拉框选中和取值的解决方法
Nov 22 Javascript
SVG描边动画
Feb 23 Javascript
vue中appear的用法
Aug 17 Javascript
Vue-cli3项目配置Vue.config.js实战记录
Jul 29 Javascript
JavaScript设计模式之命令模式实例分析
Jan 16 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
曾在DC漫画界反派角色扮演的演员,谁才是你心目中的小丑之王?
2020/04/09 欧美动漫
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
初识PHP
2014/09/28 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
yepnope.js 异步加载资源文件
2011/09/08 Javascript
jQuery数组处理代码详解(含实例演示)
2012/02/03 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
AngularJS模板加载用法详解
2016/11/04 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
python实现根据图标提取分类应用程序实例
2014/09/28 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
浅析python继承与多重继承
2018/09/13 Python
Python装饰器简单用法实例小结
2018/12/03 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
估算杭州有多少软件工程师
2015/08/11 面试题
活动总结结尾怎么写
2014/08/30 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS
python使用shell脚本创建kafka连接器
2022/04/29 Python