这种情况:像PhoneGap一样,我想定义并调用一个不存在的JavaScript函数,它需要访问ios功能。如,
javascript代码:
function onClickButton(){
toModule(true, true, "title1", 1);
}
我想通过函数toModule访问iOS功能。但是怎么样?你能告诉我吗?
PS:我知道一个解决方案JS-> iOS是使用UIWebViewDelegate的
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
但我不想要那个解决方案,只需处理JS函数toModule(...)
答案 0 :(得分:0)
从javascript(phonegap)您无法直接访问ios本机代码,而是应该使用或开发可以建立此连接的phonegap插件。
找到更多信息答案 1 :(得分:0)
这很简单 步骤1)在项目中包含cordova.js文件 Step2)在你的javascript文件和你的javascript文件中包含cordova.js添加以下代码
cordova.exec(
function successCallback() {
},
function errorHandler(err) {
},
'Login', 'callLogin', [param]);
}
这里Login是本机类的名称,callLogin是Login类中的函数,param是要发送到本机文件的参数数组
Step3)转到config.xml和这个
<feature name="Login">
<param name="ios-package" value="Login"/>
</feature>
Step4)
- (void)Login:(CDVInvokedUrlCommand*)command
{ // this is the native function, which is being called from javascript file, do your work here
}
Step5)如果你想将任何数据从本地发送回js文件,你需要编写以下代码。
NSString * jsCallBack = [NSString stringWithFormat:@“callJsFunction(parameters)]; [self.webView stringByEvaluatingJavaScriptFromString:jsCallBack];
callJsFunction()是您要从本机调用的js函数的名称。(您只能发送字符串)
Step6)要从native获取值到js,你需要在js文件中编写callJsFunction(参数)。在js文件中写下以下函数
callJsFunction(参数) { }
这是从本机类的js和js调用本机函数的完整过程。