有些事件浏览器本身不触发,但是我们却有需求怎么办呢?其实我们是可以手动触发事件的,比如window的resize事件,在jQuery中,更是直接提供了triggle方法用来触发被选元素的指定事件类型,这里学习一下如何手动触发指定事件和自定义事件。
思考来源
工作中碰到需要手动触发window的resize事件的需求,基本代码如下:
var e=document.createEvent('Event');
e.initEvent('resize',true,true);
window.dispatchEvent(e);
方法介绍
- 创建事件对象
document.createEvent(eventType) - 初始化事件对象
event.initEvent(eventName, canBubble, preventDefault) - 触发事件
element.dispatchEvent(event) - 绑定事件
element.addEventListener()
观察者模式(自定义事件)
如果自己会自定义事件了,这一块的知识也是也就差不多了,不急,一步一步来哈。
观察者模式
这是一种创建松散耦合代码的技术。它定义对象间 一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。由主体和观察者组成,主体负责发布事件,同时观察者通过订阅这些事件来观察该主体。主体并不知道观察者的任何事情,观察者知道主体并能注册事件的回调函数。
模拟实现
JavaScript事件机制的实现主要依靠上述四个方法,可以实现事件的订阅和发布。我们可不可以模拟实现呢?
未完待续
...