android有一个名为addJavascriptInterface()
的方法,它将android JAVA对象导入到Javascript上下文中。在iOS上是否有类似的功能?我也遇到过一些类似的问题:
androids-addjavascriptinterface-equivalent-in-ios
calling-objective-c-function-from-javascript-in-ios-applications
但我找不到一个合适的解决办法。
function initiateAddCall(){
var locus = reader.getPlace().getLocus();
RoomHelper.postReaderLocus(JSON.stringify(locus));
}
RoomHelper
是我使用的javascript处理程序。在UIWebView
iOS . .
我只是使用EasyJSWebView和工作得很好。还有其他的解决方案,如WebViewJavascriptBridge,但EasyJSWebView更容易使用。
RoomHelper *roomHelper = [RoomHelper new];
[self.myWebView addJavascriptInterfaces:interface WithName:@"RoomHelper"];
[self.myWebView injectJS:webView];
在javascript中调用:
RoomHelper.test()
在RoomHelper中你实现了一个叫做test
的方法RoomHelper.h:
@interface RoomHelper : NSObject
- (void) test;
@end
必须将此用于本机应用程序项目,其中我使用D3.JS来显示图形。使用下面的代码调用JS函数
NSString *jsString = [NSString stringWithFormat:@"showLegendGraphsFromDevice('%@',%d)",sectionName, position];
[_webView stringByEvaluatingJavaScriptFromString:jsString];
这里function showLegendGraphsFromDevice(name, position)
是JS函数
这里的关键是用所需的引号创建正确的JS字符串
您可以使用JavascriptCore实现addJavascriptInterface
。
- https://www.bignerdranch.com/blog/javascriptcore-example/
- http://nshipster.com/javascriptcore/