1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- class MessageCenter {
- 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
- }, '*')
- }
- // ---- 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 messageCenter = new MessageCenter();
- export default messageCenter;
|