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获取当前月的第一天和最后一天的小例子
Nov 18 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
Jan 27 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
Apr 20 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
Jul 27 Javascript
jQuery跨域问题解决方案
Aug 03 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
Jun 09 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
Aug 15 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
Sep 19 Javascript
简单的js表格操作
Sep 24 Javascript
JavaScript实现瀑布流图片效果
Jun 30 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
Sep 21 jQuery
Vue 与 Vuex 的第一次接触遇到的坑
Aug 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
php提示undefined index的几种解决方法
2012/05/21 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
微信支付开发交易通知实例
2016/07/12 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
2016/09/11 PHP
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
Python程序设计入门(5)类的使用简介
2014/06/16 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
Python之re操作方法(详解)
2017/06/14 Python
python3 对list中每个元素进行处理的方法
2018/06/29 Python
python实现微信小程序自动回复
2018/09/10 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
Python pandas库中的isnull()详解
2019/12/26 Python
Django更新models数据库结构步骤
2020/04/01 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
社区党总支书记先进事迹材料
2014/01/24 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
意向书范文
2014/03/31 职场文书
新农村建设标语
2014/06/24 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
签证工作证明模板
2015/06/15 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书
python b站视频下载的五种版本
2021/05/27 Python
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python