UNPKG

iframe-simple-api

Version:

====================== `var fw = new Framework();` 父应用: `var config = {` ` userID:'123456'` `}` `fw.reg(config)` 子应用初始化: `fw.subInit({arr,success,error})`

6 lines 3.88 kB
/*! * /* iframe-simple-api v1.1.4 * (c) 2020 by Shenzhen Shenju Technology co., Ltd. * https://www.shenjugroup.com * / */ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function o(e,t){var n=function(e){var t={};if("string"!=typeof e&&(e=window.location.search),!(e=e.replace(/^\?/g,"")))return{};for(var n=e.split("&"),r=null,o=0;o<n.length;++o)r=n[o].split("="),t[decodeURIComponent(r[0])]=decodeURIComponent(r[1]);return t}();if(void 0===t)delete n[e];else{if(n[e]===t)return;n[e]=t}var r="?"+function(e){if(!e||e.constructor!==Object)throw new Error("Query object should be an object.");var t="";return Object.keys(e).forEach((function(n){t+=n+"="+encodeURIComponent(e[n])+"&"})),t=t.replace(/\&$/g,"")}(n);window.history.replaceState(null,"",r+location.hash)}n.r(t),n.d(t,"emitMessage",(function(){return a})),n.d(t,"setSubApp",(function(){return u}));var i=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config={},this.num=0,this.store={},this.timer=null}var t,n,o;return t=e,(n=[{key:"regAPI",value:function(e){this.config=e,window.addEventListener("message",this.regOn.bind(this),!1)}},{key:"regOn",value:function(e){if("string"==typeof e.data){if(0==e.data.indexOf("$api-")){var t=e.data.substr(5),n=this.config[t];n?e.source.postMessage({api:e.data,value:n},"*"):e.source.postMessage({api:t,value:n},"*")}if(0==e.data.indexOf("$jump-")){var r=e.data.substr(6);r&&window.open(r)}}}},{key:"removeReg",value:function(){window.removeEventListener("message",this.regOn)}},{key:"get",value:function(e,t){top.postMessage("$api-"+e,"*")}},{key:"getOn",value:function(e,t){if(console.log("getOn"),event.data.api&&"string"==typeof event.data.api){if(clearTimeout(this.timer),this.num++,0==event.data.api.indexOf("$api-")){var n=event.data.api.substr(5);this.store[n]=event.data.value}else console.log("key does not exist---------\x3e",event.data.api);this.num==t.length&&e&&e(this.store)}}},{key:"subInit",value:function(e){var t=e.messageKeys,n=e.success,r=e.error||this.defaultError;this.timer=setTimeout(r,1e3),window.addEventListener("message",this.getOn.bind(this,n||null,t),!1);for(var o=0;o<t.length;o++)this.get(t[o])}},{key:"defaultError",value:function(){alert("未知原因导致超时!请刷新页面")}}])&&r(t.prototype,n),o&&r(t,o),e}();t.default=i;var a=function(){setTimeout((function(){top.postMessage("$router-"+window.location.href,"*")}))},u=function(e){e.data&&"string"==typeof e.data&&0==e.data.indexOf("$router-")&&o("subApp",e.data.substr(8))}}])}));