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 相关文章推荐
麦鸡的TAB切换功能结合了javascript和css
Dec 17 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
Mar 18 Javascript
网站404页面3秒后跳到首页的实例代码
Aug 16 Javascript
jQuery通过Ajax返回JSON数据
Apr 28 Javascript
JavaScript获取并更改input标签name属性的方法
Jul 02 Javascript
深入解析JavaScript中函数的Currying柯里化
Mar 19 Javascript
基于jquery实现弹幕效果
Sep 29 Javascript
javascript过滤数组重复元素的实现方法
May 03 Javascript
JavaScript判断浏览器和hack滚动条的写法
Jul 23 Javascript
实例讲解javascript实现异步图片上传方法
Dec 05 Javascript
在vue中使用jointjs的方法
Mar 24 Javascript
Vue 获取数组键名的方法
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判断字符以及字符串的包含方法属性
2008/08/30 PHP
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
php实现的网络相册图片防盗链完美破解方法
2015/07/01 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
XP折叠菜单&仿QQ2006菜单
2006/12/16 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
jQuery实现强制cookie过期方法汇总
2015/05/22 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
js替换字符串中所有指定的字符(实现代码)
2016/08/17 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
JavaScript数组去重的多种方法(四种)
2017/09/19 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
Bootstrap实现模态框效果
2019/09/30 Javascript
在Python中实现贪婪排名算法的教程
2015/04/17 Python
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
Python制作简易注册登录系统
2016/12/15 Python
python基于ID3思想的决策树
2018/01/03 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
Python阶乘求和的代码详解
2020/02/14 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
滴水洞导游词
2015/02/10 职场文书
2016年母亲节广告语
2016/01/28 职场文书
会议主持词通用版
2019/04/02 职场文书