浏览器插件-父子页面跨域通信封装
问题描述 和遇到的问题 以及解决方案 > 问题描述: 主页面和子页面通信的时候可能存在跨域 会导致消息发不过去 通过 postmessage 可以发送数据 弊端是不是同步的 导致交互起来比较麻烦 > 想法: 每次发送数据的时候 生成一个 id (通过这个 id 关联发送和返回的数据) 其他页面处理完成后 通过 senderWin 把数据返回来,这边接受到消息后 通过这个 id 把发送数据的这个 promise 处理成 resolve > 这时候有个问题:希望的是 发送消息后 能知道 接收方是否已经收到, 然后还能接受到接收方的处理完的结果 > 解决方案:接收方接受到消息后立刻会返回一个 copy 的命令 发送方知道这个 copy 的命令后 会继续生成一个 promise 把这个 promise 的解决状态给封装一层 然后外面就可以继续 await 这个 promise 而拿到的就是处理完的结果