问题描述
- 在iphone/android中获取javascript函数调用
-
在iphone中:window.location = 'myscheme://FunctionName?Param1=Value1&.........';
在android中:
Android.FunctionName(params);
这样的话可以运行:
if(window.Android) Android.FunctionName(params); else window.location = 'myscheme://FunctionName?Param1=Value1&.........';
但是要对每个函数设置一遍非常麻烦,能不能用一个函数实现调用,提取细节?谢谢。
解决方案
用这个试试:
var iphoneUrl = 'myScheme://{0}?{1}'
function callNativeFunction(functionName) {
var args = Array.prototype.slice.call(arguments, 1);
if (window.andriod) {
andriod[functionName].apply(this, args);
}
else {
var params = '';
for (var i = 0, len = args.length; i < len; i++) {
params += 'param' + (i + 1) + '=' + encodeURIComponent(args[i]) + '&';
}
params = params.slice(0, -1);// remove last &
window.location = iphoneUrl.format(functionName, params);
}
}
callNativeFunction('functionName', 'param1');
String.Format:
String.prototype.format = function () {
var args = arguments;
return this.replace(/{(d+)}/g, function (match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};
时间: 2024-08-24 14:58:59