UNPKG

jknife

Version:
2 lines (1 loc) 823 B
class e{eventBox={};messageCallbackFn=null;on(e,t){this.eventBox[e]=t}emit(e,n,a={},s="*"){if(console.log(n),null==e||e!==e.window)throw new Error("emit contentWindow should be a window");if(!t(a))throw new Error("emit data should be a json");if(!n)throw new Error("emit need eventName");e.postMessage({eventName:n,data:a},s)}addEventListener(){this.messageCallbackFn||(this.messageCallbackFn=this.messageCallback.bind(this),window.addEventListener("message",this.messageCallbackFn))}removeEventListener(){window.removeEventListener("message",this.messageCallbackFn),this.messageCallbackFn=null}messageCallback(e){if(e){const n=e.data;if(!t(n)&&!n.eventName)return;const a=this.eventBox[n.eventName];a&&a(e.data.data,e)}}}function t(e){const t=typeof e;return null!==e&&("object"===t||"function"===t)}export{e as default};