【发布时间】:2013-01-09 08:56:47
【问题描述】:
我正在使用以下代码,
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
;
});
};
这很好,但适用于 andriod webview 无法正常工作。 alert(andriod[functionName]) 给我'function myFunc(..){[native Code]}'。但是andriod[functionName] 没有调用该函数。不是 如果使用andriod.myFunc 那么它可以工作,但我不希望函数被硬编码。
【问题讨论】:
-
不完全确定,但这可能是一个错字。你拼了好几次android andriod。
-
apply方法是否可能被覆盖?alert(andriod[functionName].apply)说什么? -
@njzk2,我可以使用 andriod.myFunc 调用这个函数。但不适用于 andriod['myFunc'].apply
-
@user960567:这不是什么?!?我重复我的问题:
alert(andriod[functionName].apply)说什么? -
@Martijn, alert(andriod[functionName]) 说,'function myFunc(..){[native Code]}'
标签: javascript android android-webview