活着
新人入坑,不定时分享一些工作中遇到的一些问题,或者觉得好的点

活着ccc

新人入坑,不定时分享一些工作中遇到的一些问题,或者觉得好的点

postMessage 的方法封装

const Autel = {
  /**
   *  向主页面传递参数
   * @param {String} message
   * @param {String} key
   */
  emitParentMessage(key, message) {
    window.parent.postMessage({ [key]: message }, '*')
  },

  /**
   *  向子页面传递参数
   * @param {String} message
   * @param {String} key
   */
  emitChildrenMessage(key, message, index) {
    window.frames[index].postMessage({ [key]: message }, '*')
  },
  /**
   *  监听获取参数
   * @returns {callback}
   */
  onMessage(key, callback) {
    return new Promise(resolve => {
      window.addEventListener(
        'message',
        function(e) {
          if (key && e.data[key]) {
            resolve(e.data)
          }
        },
        false
      )
    })
  },
  /**
   *  判断 是否被 ifame 嵌套
   *  true 表示未被嵌套, false 表示已被嵌套
   * @returns {boolean}
   */
  isWithinOrOuter() {
    return window.self === window.top
  },
  /**
   *  获取token
   * @returns {string}
   */
  async getAutelToken() {
    Autel.emitParentMessage('AutelToken', 'created')
    const token = await Autel.onMessage('AutelToken').then(res => {
      return res.AutelToken
    })
    return token
  }
}

export default Autel

  

posted on 2020-06-19 10:54  活着ccc  阅读(488)  评论(0编辑  收藏  举报

导航