如何从我的自定义CDVPlugin类(Objective C语言)调用JavaScript函数

3
我已经在Cordova应用程序中创建了一个自定义(CDVPlugin)插件。
通过该插件,如果JavaScript文件调用了在CDVPlugin中声明的方法,则我可以轻松地发送响应。
CDVPluginResult *pluginResult = nil;
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:[NSString stringWithFormat:@"%@",deviceUUIDString]];
self.delegateCallbackId=command.callbackId;
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];

但是如何从我的自定义CDVPlugin类中调用JavaScript函数。
2个回答

1
我发现了答案,如果我们想要调用任何JavaScript方法,请使用在CDVCommandDelegate类中声明的evalJs,并且可以将函数名称作为字符串加上分号来写。
在Cordova中: 我们可以像这样使用evaluateJavaScript方法:
[self.commandDelegate evalJs:@"callCustomMethodJs();"];

0

你可以尝试以下方法

NSString * jsfunctioncall = [NSString stringWithFormat:@"yourjsfunctiontobecalled()"];

#ifdef __CORDOVA_4_0_0
    [self.webViewEngine evaluateJavaScript:jsfunctioncall completionHandler:nil];
#else
    [self.webView stringByEvaluatingJavaScriptFromString:jsfunctioncall];
#endif

CDVPlugin有webViewEngine和webView作为其属性,所以如果您已经继承了CDVPlugin,则它可能会起作用。为了使其正常工作,您的JS代码可能需要先加载。我自己还没有尝试过。

希望能对您有所帮助 :)


感谢您的帮助,但我已经尝试了这种方式:`NSString * jsfunctioncall = [NSString stringWithFormat:@"callCustomMethodJs()"];viewController=[[CDVViewController alloc] init]; [viewController.webViewEngine evaluateJavaScript:jsfunctioncall completionHandler:nil];`但是没有成功。 - Khushboo Motwani
不要创建CDVViewController的对象。CDVPlugin有属性webViewEngine和webView。您可以使用这些属性进行调用。在使用“evaluateJavaScript”之前需要加载JS。将更新的代码发布在问题中,即您在哪里编写了此代码。这可能会很有帮助。 - Sanman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接