本帖最后由 hechengjin 于 2016-3-26 19:18 编辑
事件相关处理方法
1.钩子类似用法 ----后面的默认逻辑照常执行- let saveWindowOnSize = window.onresize
- window.onresize = (e) => {
- if (window.gLeftPaneControl.type !== 1) { // window.gLeftPaneControl.MAIL
- saveWindowOnSize.call(window, e)
- return
- }
- let newRootElementHeight = getElementHeight(this.rootElement)
- if (this.rootElementHeight !== newRootElementHeight) {
- this.rootElementHeight = newRootElementHeight
- let event = document.createEvent('HTMLEvents')
- event.initEvent('resize', true, true)
- this.rootElement.dispatchEvent(event)
- }
- saveWindowOnSize.call(window, e)
- }
- }
复制代码 2.函数重写----后面的默认逻辑不再调用
3.使用容器加入所有监听对象,循环调用-----多观察者支持
4.触发事件---全局事件,需要的就接收处理- let event = document.createEvent('HTMLEvents')
- event.initEvent('resize', true, true)
- this.rootElement.dispatchEvent(event)
复制代码 5.源对象[source]和接收器[sink]原理
重点理解下类似COM(XPCOM)中的可连接对象,即源对象[source]和接收器[sink]原理,源对象与接收器在程序中的应用,及如何处理多通道的情况。 多通道:A收听B的微博,单通道,只要A告诉B就可以了 A收听B,同时收听C和D,这时,A要分别与B、C、D打交道,比较繁琐,这时出现S,它统一管理B、C、D的变化通知,A只要和S说一下就好了。当然要跟S说清楚,你到时要收听的具体对象(flags标志值)。
|