2 for 2012 for_2012 于 2013.01.14 14:01 提问

在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&.........';

但是要对每个函数设置一遍非常麻烦,能不能用一个函数实现调用,提取细节?谢谢。

1个回答

g989_1314125
g989_1314125   2013.01.14 14:49
已采纳

用这个试试:

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
            ;
        });
    };
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!