Better

Ethan的博客,欢迎访问交流

JavaScript自定义事件

有些事件浏览器本身不触发,但是我们却有需求怎么办呢?其实我们是可以手动触发事件的,比如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事件机制的实现主要依靠上述四个方法,可以实现事件的订阅和发布。我们可不可以模拟实现呢?

未完待续

...



留言