1、什么是dispatchEvent

dispatch意为“调度”、“派遣”,event为“事件”。所以dispatchEvent即向指定事件目标派发一个事件,并以合适的顺序触发受影响的事件目标。

简单来说就是,一般的事件触发都是用户进行某些操作时才会触发,而使用dispatchEvent就可以在代码中手动触发事件了。

下面是一个简单的创建并派发事件的例子:

var event = new Event('click');//创建一个click事件
elem.addEventListener('click', function(e){}, false);//为元素绑定事件监听
elem.dispatchEvent(event);//派发事件
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<button id="click">Click me!</button>
</body>
<script type="text/javascript">
window.onload = function(){
var btn = document.querySelector('#click');
btn.addEventListener('click', function(e){
alert('okk!');
}, false);
var event = new Event('click');
btn.dispatchEvent(event);
}
</script>
</html>

2、运用场景

  • 使用场景

    • 一是触发自定义事件,浏览器自带事件一般由浏览器接收某些操作之后触发,而自定义事件的触发就需要使用dispatchEvent来进行手动触发了。
    • 二是触发浏览器标准事件。根据需求决定,某些操作如果正好与某个元素事件的触发一致,且该事件很好模拟,我们就可以触发该事件来达到某些我们需要的执行结果。
  • 注意事项

    • ie9以下的版本不支持该方法,二是使用fireEvent方法,所以,有需求的话需要做好浏览器兼容。
  • 使用Jquery来兼容浏览器

    Jquery中的trigger方法就是用来触发事件的。

    $(selector).trigger(event,[param1,param2,...])//规定指定元素要触发的事件,字符串

$(selector).trigger(eventObj)//eventObj派发的事件对象

3、总结

事件除了浏览器自动监,我们还可以手动触发事件,也就是使用dispatchEvent

但是我们定义事件的目的就是为了执行某一方法,所以我们手动触发事件的目的其实也是想要执行该事件下影响到的方法。有时候不只是一个方法,且执行顺序也有所区别,这个时候调用方法不如直接触发事件方便,但是方便的同时也会有某些我们不希望触发函数的隐患。

事件派发dispatchEvent的更多相关文章

  1. Javascript事件派发-dispatchEvent

    事件派发的作用: 1.派发数据,将一个封闭模块中的数据传递给另一个封闭模块.2.事件完成了较为复杂的解耦. 事件和回调函数不同在于: 1.事件可以在任意地方去获取,而回调函数只能在一个地方存在,如果需 ...

  2. 使用lua实现一个简单的事件派发器

    设计一个简单的事件派发器,个人觉得最重要的一点就是如何保证事件派发过程中,添加或删除同类事件,不影响事件迭代顺序和结果,只要解决这一点,其它都好办. 为了使用pairs遍历函数,重写了pairs(lu ...

  3. Java多线程开发系列之番外篇:事件派发线程---EventDispatchThread

    事件派发线程是java Swing开发中重要的知识点,在安卓app开发中,也是非常重要的一点.今天我们在多线程开发中,穿插进来这个线程.分别从线程的来由.原理和使用方法三个方面来学习事件派发线程. 一 ...

  4. wex5 实战 框架拓展之2 事件派发与data刷新

    一 前言 讲完公共data,相信大家对框架级的data组件级绑定有了更新的认识,接下来我们继续深入,以求研究明白wex5的框架能力. 在一个web项目中,其实有一个data, 是基础框架必须的data ...

  5. [置顶] Android源码分析-点击事件派发机制

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17339857 概述 一直想写篇关于Android事件派发机制的文章,却一直没 ...

  6. JS 事件派发器EventDispatcher

    在Java和AS中经常用到EventDispatcher,写了一个JS版本的. addListener :添加事件监听器 removeListener:移除事件监听器 dispatchEvent:派发 ...

  7. js事件触发器 dispatchEvent()

    [其实就是自动触发事件,而非手动(交互)触发事件] dispatchEvent是作为高级浏览器(如chrome.Firfox等)的事件触发器来使用的,那么什么是事件触发器?就是触发事件的东西.可能有人 ...

  8. Android Touch事件派发流程源码分析

    分native侧事件派发到java侧和Framework派发事件到UI,流程看源码即可,此处不赘叙, Native侧派发事件的干活类图如下:

  9. pyglet模块的EventDispatcher(事件派发对象)

    事件派发对象用于处理事件的派发与响应,pyglet的window对象正是继承了它才具有处理事件的能力. 步骤: 1.注册事件类型: EventDispatcher.register_event_typ ...

随机推荐

  1. Java序列化随记

    序列化简介: 程序中的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,因此需要Java序列化技术. Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将二进制 ...

  2. oop编程思想简单理解

    四大基本特性: 抽象:提取现实世界中某事物的关键特性,为该事物构建模型的过程.对同一事物在不同的需求下,需要提取的特性可能不一样.得到的抽象模型中一般包含:属性(数据)和操作(行为).这个抽象模型我们 ...

  3. python3学习笔记之十七

    1.  网站本质:通过socket建立连接. 服务端(网站) 1.  先启动并监听:80端口 4.  获取请求信息 请求头 请求体 5.  处理请求 响应内容: 响应头:\r\n\r\n响应体     ...

  4. XmlReader 使用

    <Root> <Phone Name="Oppo手机"> <BackGround Description="颜色">白色 黑 ...

  5. 网络远程唤醒 WOL Magic Packet

    Magic Packet Magic Packet白皮书介绍: The basic technical details of Magic Packet Technologyare simple and ...

  6. 559. Maximum Depth of N-ary Tree

    https://leetcode.com/problems/maximum-depth-of-n-ary-tree/description/ 非常简单的题目,连edge case 都没有.思路就是:最 ...

  7. Virtual box中Ubuntu虚拟机磁盘碎片整理和空间清理方法

    虚拟机中,随着不断的使用,增加大文件(例如日志,视频和软件版本),虽然在虚拟机中手动删除了,但是虚拟机占用的空间并不会随之减少,需要手动清理一下. 这里介绍一种Virtual box中Ubuntu碎片 ...

  8. LOJ#3048. 「十二省联考 2019」异或粽子 Trie

    原文链接www.cnblogs.com/zhouzhendong/p/LOJ3048.html 题解 $O(n\log^2 {a_i})$ 的做法比较简单: 1. 求出第 k 大的是什么: 二分答案, ...

  9. c++ 积累

    class MyClass { public: MyClass()=default; MyClass(const MyClass& )=delete; ...... 有些时候我们希望限制默认函 ...

  10. Python 判断文件后缀

    方法1, str的endswith方法: ims_path='data/market1501/Market-1501-v15.09.15/bounding_box_test/12312.jpg' im ...