wnjk
Version:
两只蜗牛通用微服务脚本
70 lines (69 loc) • 2.83 kB
JavaScript
define(["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var JsBridge = (function () {
function JsBridge() {
}
JsBridge.appFunction = function (functionName, params) {
console.log("\u8C03\u7528native\u6CE8\u5165\u7684\u65B9\u6CD5\uFF1Awindow.native." + functionName);
console.log('传过去的参数为:', params);
var windowObj = window;
if (!windowObj.native) {
windowObj.native = {};
}
if (params == undefined) {
windowObj.native[functionName]();
}
else {
windowObj.native[functionName](params);
}
};
JsBridge.injectExec = function (functionName, params) {
var windowObj = window;
if (!windowObj.native) {
windowObj.native = {};
}
if (typeof params == 'function') {
var callbackName = functionName + "_APPinjection_callback";
windowObj.native[callbackName] = params;
params = callbackName;
}
else if (typeof params == 'object') {
for (var key in params) {
var val = params[key];
if (typeof val == 'function') {
var callbackName = functionName + "_APPinjection_" + key;
windowObj.native[callbackName] = params[key];
params[key] = callbackName;
}
}
params = JSON.stringify(params);
}
JsBridge.appFunction(functionName, params);
};
JsBridge.injectListen = function (functionName, callback) {
var 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;
}
};
return JsBridge;
}());
exports.default = JsBridge;
});