我使用下面的代碼,JavaScript應用函數不適用於Android WebView?
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
;
});
};
這偉大的,但在安卓應用的WebView不工作。 alert(andriod[functionName])
給我'function myFunc(..){[native Code]}'
。但是andriod[functionName]
不會調用該函數。不是如果使用andriod.myFunc
那麼它可以工作,但我不希望該功能被硬編碼。
不能完全肯定,但這可能是一個錯字。你拼寫android andriod幾次。 – njzk2
'apply'方法可能被覆蓋? 'alert(andriod [functionName] .apply)'說了些什麼? – Martijn
@ njzk2,我可以使用andriod.myFunc調用這個函數。但不是用andriod ['myFunc']。apply – user960567