2013-01-07 79 views
0

在iPhone,我需要使用,摘要Iphone/Android函数从Javascript调用?

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

但是在Android中,

Android.FunctionName(params); 

这对我的作品,

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

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

+0

尝试创建一个函数 “FunctionName” 的iPhone并编写该语句“window.location ='myscheme:// FunctionName?Param1 = Value1&.........';”在那个功能。我认为这会帮助你。 – Raj

回答

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