【问题标题】:iOS - how to call writeJavascript with parameters in phoneGap / CordovaiOS - 如何使用 phoneGap / Cordova 中的参数调用 writeJavascript
【发布时间】:2012-06-07 20:19:21
【问题描述】:

我有一个 js 方法 testPN(param),我需要从我的本机应用程序中调用它。我正在使用这些线来实现这一点 -

NSString *jsStatement = [NSString stringWithFormat:@"testPN(%@);", custData];
[self writeJavascript:jsStatement];

这在某种程度上不起作用。如果我在没有任何参数的情况下更改为 testPN() 并像这样调用它,它会起作用 -

NSString *jsStatement = [NSString stringWithFormat:@"testPN();"];
[self writeJavascript:jsStatement];

custData 只是一个常规的非空 NSString* 知道我可能做错了什么吗?

【问题讨论】:

  • 你的意思是javascript调用没有发生,还是确实发生了但没有成功?
  • 我相信它甚至没有达到功能:-(
  • writeJavascript 是什么样的?您是否尝试过将警报作为 testPN() 函数的第一行以 a) 检查是否正在调用 javescript 函数,b) 检查是否使用您期望的参数调用它?然后如果是 c) 在函数末尾添加一个警报,看看它是否到达,如果没有,那么 custData 的内容会导致您的 javascript 函数发生故障。
  • writeJavascript 是 CDVPlugin.h 中的一个 Cordova 函数。我尝试将警报作为第一条语句,发现它从未被调用过。知道为什么吗?
  • 抱歉,我对 Cordova 不是很熟悉。但我非常熟悉PhoneGap 用来从Objective-C 调用Javascript 的技术。因此,如果您在一段时间后没有得到答案,我认为 CDVPlugin.h 是开源的并且可供检查,因此如果您可以指导我从哪里获得它,那么可以检查它的内部机制。但是先等着看有没有人知道原因。

标签: iphone ios cordova phonegap-plugins


【解决方案1】:

NSString *jsStatement = [NSString stringWithFormat:@"testPN(%@);", custData];

您可能忘记在 javascript 函数的参数中添加引号。
@"testPN(%@);" 应该是 @"testPN('%@');".

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      @Suchi,如果你像下面这样使用self.webView,它将正常工作,

      试试这个...

      NSString *jsStatement = [NSString stringWithFormat:@"testPN(%@);", custData];

      [self.webView stringByEvaluatingJavaScriptFromString:jsStatement];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多