0

这种情况:和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(...)

4

2 回答 2

0

从 javascript(phonegap) 您不能直接访问 ios 本机代码,而是应该使用或开发一个可以建立此连接的 phonegap 插件。

您可以在插件开发指南中找到更多信息

于 2012-09-08T07:46:27.373 回答
0

这非常简单 第 1 步)在您的项目中包含 cordova.js 文件 第 2 步)在您的 javascript 文件中包含 cordova.js 并在您的 javascript 文件中添加以下代码

    cordova.exec(
                              function successCallback() {

                              }, 
function errorHandler(err) {
                              },
'Login', 'callLogin', [param]);
                              }

这里Login是native类的名字,callLogin是Login类中的函数,param是你要发送到native文件的参数数组

Step3) 转到 config.xml 和这个

<feature name="Login">
        <param name="ios-package" value="Login"/>
    </feature>

第4步)

- (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) 要将值从本机获取到 js,您需要在 js 文件中编写 callJsFunction(parameters)。在js文件中写入以下函数

callJsFunction(参数) { }

这是从js调用native函数和从native class调用js的完整过程。

于 2014-11-07T07:21:18.737 回答