iOS - 如何使用 phoneGap / Cordova 中的参数调用 writeJavascript
Posted
技术标签:
【中文标题】iOS - 如何使用 phoneGap / Cordova 中的参数调用 writeJavascript【英文标题】:iOS - how to call writeJavascript with parameters in phoneGap / Cordova 【发布时间】: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 是开源的并且可供检查,因此如果您可以指导我从哪里获得它,那么可以检查它的内部机制。但是先等着看有没有人知道原因。 【参考方案1】:
NSString *jsStatement = [NSString stringWithFormat:@"testPN(%@);", custData];
您可能忘记在 javascript 函数的参数中添加引号。@"testPN(%@);"
应该是 @"testPN('%@');".
【讨论】:
【参考方案2】:看看这个维基:http://wiki.phonegap.com/w/page/36753496/How%20to%20Create%20a%20PhoneGap%20Plugin%20for%20ios
这有什么帮助吗?
【讨论】:
【参考方案3】:@Suchi,如果你像下面这样使用self.webView,它将正常工作,
试试这个...
NSString *jsStatement = [NSString stringWithFormat:@"testPN(%@);", custData];
[self.webView stringByEvaluatingJavaScriptFromString:jsStatement];
【讨论】:
以上是关于iOS - 如何使用 phoneGap / Cordova 中的参数调用 writeJavascript的主要内容,如果未能解决你的问题,请参考以下文章
如何使用phonegap从javascript调用ios方法?
如何在 iOS 中使用自定义 phonegap 3.3 插件
如何使用 iOS 的 PhoneGap 获取 .ipa 文件?