wnjk
Version:
两只蜗牛通用微服务脚本
63 lines (62 loc) • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class JsBridge {
static appFunction(functionName, params) {
let windowObj = window;
if (!windowObj.native) {
windowObj.native = {};
}
if (params == undefined) {
windowObj.native[functionName]();
}
else {
windowObj.native[functionName](params);
}
}
static injectExec(functionName, params) {
let windowObj = window;
if (!windowObj.native) {
windowObj.native = {};
}
if (typeof params == 'function') {
let callbackName = `${functionName}_APPinjection_callback`;
windowObj.native[callbackName] = params;
params = callbackName;
}
else if (typeof params == 'object') {
for (let key in params) {
let val = params[key];
if (typeof val == 'function') {
let callbackName = `${functionName}_APPinjection_${key}`;
windowObj.native[callbackName] = params[key];
params[key] = callbackName;
}
}
params = JSON.stringify(params);
}
JsBridge.appFunction(functionName, params);
}
static injectListen(functionName, callback) {
let windowObj = window;
if (!windowObj.native) {
windowObj.native = {};
}
functionName = functionName.split('.');
if (functionName.length > 1) {
var string;
var last_key = functionName[functionName.length - 1];
for (var i = functionName.length; i--; i >= 0) {
string = '"' + functionName[i] + '"' + ':' + (string ? '{' + string + '}' : '1');
}
windowObj.native[functionName] = JSON.parse('{' + string + '}', function (k, v) {
if (last_key == k)
v = callback;
return v;
});
}
else {
windowObj.native[functionName] = callback;
}
}
}
exports.default = JsBridge;