0

在 Iphone 中,我需要使用,

 window.location = 'myscheme://FunctionName?Param1=Value1&.........';

但在安卓中,

Android.FunctionName(params);

这对我有用,

if(window.Android)
    Android.FunctionName(params);
else
    window.location = 'myscheme://FunctionName?Param1=Value1&.........';

但是对每个功能都这样做对我来说很痛苦。是否可以抽象这些细节并使用单个函数来调用两者。

4

1 回答 1

0

这对我有用,但不知道好不好,

var iphoneUrl = 'myScheme://{0}?{1}'
function callNativeFunction(functionName) {
    var args = Array.prototype.slice.call(arguments, 1);
    if (window.andriod) {
        andriod[functionName].apply(andriod, 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
        ;
    });
};
于 2013-01-07T10:49:54.807 回答