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 相关文章推荐
JQuery防止退格键网页后退的实现代码
Mar 23 Javascript
javascript实现动态模态绑定grid过程代码
Sep 22 Javascript
jquery判断对象是否为空并遍历对象的简单实例
Jul 26 Javascript
轻松实现jquery选项卡切换效果
Oct 10 Javascript
AngularJS入门教程之过滤器用法示例
Nov 02 Javascript
javascript基本数据类型和转换
Mar 17 Javascript
Vue.js手风琴菜单组件开发实例
May 16 Javascript
JavaScript严格模式下关于this的几种指向详解
Jul 12 Javascript
jQuery EasyUI Layout实现tabs标签的实例
Sep 26 jQuery
Vue组件中slot的用法
Jan 30 Javascript
详解关于微信setData回调函数中的坑
Feb 18 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 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
yii框架中的Url生产问题小结
2012/01/16 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
javascript实现行拖动的方法
2015/05/27 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
jQuery Form表单取值的方法
2017/01/11 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
JavaScript面向对象精要(下部)
2017/09/12 Javascript
React中的refs的使用教程
2018/02/13 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
2019/08/13 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
2019/08/27 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
sublime python3 输入换行不结束的方法
2018/04/19 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
Django实现表单验证
2018/09/08 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
python安装cx_Oracle和wxPython的方法
2020/09/14 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
计算 s=(x*y)1/2,用两个宏定义来实现
2016/08/11 面试题
董事长岗位职责
2013/11/30 职场文书
家长给老师的道歉信
2014/01/13 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
在pycharm中无法import所安装的库解决方案
2021/05/31 Python