firemail
标题: javascript常用方法 [打印本页]
作者: hechengjin 时间: 2016-3-22 11:34
标题: javascript常用方法
本帖最后由 hechengjin 于 2016-3-22 11:38 编辑
数组合并,修改数组内容- let messageIDs = []
- let ranges = GetWinControl().selection.getRanges()
- for (let range of ranges) {
- for (let row = range.firstIndex; row <= range.lastIndex; row++) {
- let messageItem = gMailList.getItem(row)
- if (gMailList.threaded) {
- Array.prototype.push.apply(messageIDs, messageItem.messageIDs)
- } else {
- messageIDs.push(messageItem.primaryKey)
- }
- }
- }
- let messageURIs = messageIDs.map((messageID) => {
- let messageItem = gMailList.memoryDatabase.getMessageItem(messageID)
- let messageURI = getMessageURI(messageItem.folderID, messageItem.messageKey)
- return messageURI
- })
复制代码
作者: hechengjin 时间: 2016-3-26 16:44
根据class查询元素集
<div st class="firemail-item">
<div id="messageListItem" key="xxx" style="position:absolute;left:0px;right:0px;">...</div>
</div>...
let items = listView.rootElement.querySelectorAll('.firemail-item:hover #messageListItem')
作者: hechengjin 时间: 2016-3-26 16:56
延后执行方法(防止频繁刷新等)
1.Promise
2.setTimeout(code,millisec) millisec可设置为0
setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。
作者: hechengjin 时间: 2016-3-26 17:29
本帖最后由 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标志值)。
欢迎光临 firemail (http://firemail.wang:8088/) |
Powered by Discuz! X3 |