现在mass Framework存在两个处理事件的模块, event.js与event_fix.js。其中event_fix为IE678的补丁模块,专门用于模拟旧式IE下不能冒泡到顶端的表单事件(change,submit,reset),与模拟input事件。

但随着IE10的逼近,我开始着手HTML5时代事件系统的构建了。那时候,事件监听器的API已经统一,而且事件对象的接口也完全一致,并且全部支持stopImmediatePropagation,由于matchesSelector与addEventListener第三个参数的存在,我们实现事件代理更为轻松,也不着自己维护事件列表(不过,为了“事件克隆”,还得保留它),因此许多东西都可精简。精简意着更高的性能,更短的代码量,更少的意外……以下是我的一些规划:

  • 移除$.event.fix与$.event.dispatch,它们合起来大约一百行。其中,dispatch函数简化整进内部方法proxy中。
  • 使用原生document.createEvent与CustomEvent取代jEvent,自定义事件的事件源改由window对象充当。
  • 使用迭代器简化$.event.bind $.event.unbind,$.event.fire,这也是最近期的目标。