hechengjin 发表于 2016-3-22 11:34:21

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:57

根据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:52

延后执行方法(防止频繁刷新等)
1.Promise
2.setTimeout(code,millisec)   millisec可设置为0

setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。

hechengjin 发表于 2016-3-26 17:29:34

本帖最后由 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]
查看完整版本: javascript常用方法