@morjs/runtime-web
Version:
mor runtime for web
50 lines • 1.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.my = exports.getGlobalObject = void 0;
const DEFAULT_GLOBAL_OBJECT = 'my';
// 允许业务通过 window.$MOR_GLOBAL_OBJECT 来自定义需要使用的全局 API 对象
const CUSTOM_GLOBAL_OBJECT = '$MOR_GLOBAL_OBJECT';
// 支持业务自定义全局 globalObject
function getGlobalObject() {
let globalKey = DEFAULT_GLOBAL_OBJECT;
// 查询业务有没有自定义 globalObject
if (window === null || window === void 0 ? void 0 : window[CUSTOM_GLOBAL_OBJECT]) {
globalKey = window[CUSTOM_GLOBAL_OBJECT];
}
return globalKey;
}
exports.getGlobalObject = getGlobalObject;
const globalKey = getGlobalObject();
const morMy = window[globalKey] || {};
if (window[DEFAULT_GLOBAL_OBJECT] && DEFAULT_GLOBAL_OBJECT === globalKey) {
window.originalMy = {};
const myKeys = Object.keys(window[DEFAULT_GLOBAL_OBJECT]);
for (let i = 0; i < myKeys.length; i++) {
const key = myKeys[i];
window.originalMy[key] = window[DEFAULT_GLOBAL_OBJECT][key];
}
}
// 如果小程序 web-view sdk 还没有注入 window.my
// 这里使用 defineProperty 来实现,避免 window[globalKey] 被覆盖
try {
Object.defineProperty(window, globalKey, {
get() {
return morMy;
},
set(value) {
// if (!window.originalMy) {
// window.originalMy = value
// }
// return
}
});
}
catch (e) {
window[globalKey] = morMy;
}
// window[globalKey] = window[globalKey] || {
// // 这里拷贝下原始的 window.my 中提供的方法
// ...(window?.[DEFAULT_GLOBAL_OBJECT] || {})
// }
exports.my = window[globalKey];
//# sourceMappingURL=my.js.map