mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-16 06:42:53 +00:00
60 lines
1.3 KiB
JavaScript
60 lines
1.3 KiB
JavaScript
import EventEmitter from 'events';
|
|
import Debug from 'debug';
|
|
const debug = Debug('utils:postMessager');
|
|
EventEmitter.defaultMaxListeners = 100;
|
|
|
|
export class InnerMessager extends EventEmitter {
|
|
constructor() {
|
|
super();
|
|
this.handleReceive = this.handleReceive.bind(this);
|
|
window.addEventListener('message', this.handleReceive, false);
|
|
}
|
|
|
|
sendMsg(type, data, targetOrigin = '*') {
|
|
window.parent &&
|
|
window.parent.postMessage(
|
|
{
|
|
type,
|
|
data,
|
|
},
|
|
targetOrigin,
|
|
);
|
|
}
|
|
|
|
handleReceive(e) {
|
|
if (!e.data || !e.data.type) return;
|
|
this.emit(e.data.type, e.data.data);
|
|
}
|
|
|
|
destroy() {
|
|
window.removeEventListener('message', this.handleReceive);
|
|
}
|
|
}
|
|
|
|
export class OuterMessager extends EventEmitter {
|
|
constructor(innerWindow) {
|
|
super();
|
|
this.innerWindow = innerWindow;
|
|
this.handleReceive = this.handleReceive.bind(this);
|
|
window.addEventListener('message', this.handleReceive, false);
|
|
}
|
|
sendMsg(type, data, targetOrigin = '*') {
|
|
this.innerWindow &&
|
|
this.innerWindow.postMessage(
|
|
{
|
|
type,
|
|
data,
|
|
},
|
|
targetOrigin,
|
|
);
|
|
}
|
|
|
|
handleReceive(e) {
|
|
if (!e.data || !e.data.type) return;
|
|
this.emit(e.data.type, e.data.data);
|
|
}
|
|
destroy() {
|
|
window.removeEventListener('message', this.handleReceive);
|
|
}
|
|
}
|