【问题标题】:Abstract Iphone/Android Function Call from Javascript?Javascript 的抽象 Iphone/Android 函数调用?
【发布时间】:2013-01-07 06:13:36
【问题描述】:

在Iphone,我需要使用,

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

但在 Android 中,

Android.FunctionName(params);

这对我有用,

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

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

【问题讨论】:

  • 尝试为 iphone 创建一个带有“FunctionName”的函数并编写该语句“window.location = 'myscheme://FunctionName?Param1=Value1&.........';”在那个函数中。我想这会对你有所帮助。

标签: javascript android iphone


【解决方案1】:

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

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
        ;
    });
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 2012-10-24
    • 2017-10-15
    相关资源
    最近更新 更多