123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- class ContentMessageCenter {
- constructor() {
- this.iframeMap = new Map();
- this.messageCallbackMap = new Map();
- // this.listen()
- }
- findIframeById(id) {
- let target = this.iframeMap.get(id);
- if (!target) {
- target = document.getElementById(id)
- this.iframeMap.set('id', target)
- }
- return target
- }
- send({ info, data }) {
- const target = this.findIframeById(info.iframeId);
- target && target.contentWindow.postMessage({
- info,
- data
- }, '*')
- }
- sendAll({ info, data }) {
- const targets = document.querySelectorAll('iframe[data-card=denet]') || []
- targets.forEach((item) => {
- item.contentWindow.postMessage({
- info,
- data
- }, '*')
- })
- }
- // ---- don't use ----
- // add(actionType, callback) {
- // let activeQuene = this.messageCallbackMap.get(actionType);
- // if (activeQuene?.length > 0) {
- // activeQuene.push(callback)
- // } else {
- // this.messageCallbackMap.set(actionType, [callback])
- // }
- // }
- // ---- don't use ----
- // listen() {
- // window.addEventListener('message', (e) => {
- // const { actionType, data } = e.data;
- // console.log('get message in content ...', actionType, data)
- // const quene = this.messageCallbackMap.get(actionType) || [];
- // while (quene.length > 0) {
- // let callback = quene.pop();
- // callback(data)
- // }
- // })
- // }
- }
- const contentMessageCenter = new ContentMessageCenter();
- export default contentMessageCenter;
|