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
}) 根据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')
延后执行方法(防止频繁刷新等)
1.Promise
2.setTimeout(code,millisec) millisec可设置为0
setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。 本帖最后由 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.源对象和接收器原理
重点理解下类似COM(XPCOM)中的可连接对象,即源对象和接收器原理,源对象与接收器在程序中的应用,及如何处理多通道的情况。多通道:A收听B的微博,单通道,只要A告诉B就可以了A收听B,同时收听C和D,这时,A要分别与B、C、D打交道,比较繁琐,这时出现S,它统一管理B、C、D的变化通知,A只要和S说一下就好了。当然要跟S说清楚,你到时要收听的具体对象(flags标志值)。
页:
[1]