有一些库,但是我没有在大型项目中使用任何库,因此您可能想尝试一下:
- WebViewJavascriptBridge:https : //github.com/marcuswestin/WebViewJavascriptBridge
- GAJavascript:https://github.com/newyankeepreshop/GAJavascript
—
但是,我认为这很简单,您可以自己尝试一下。当我需要这样做时,我个人就是这样做的。您可能还会创建一个适合您需求的简单库。
1.从Objective-C执行JS方法
这实际上只是一行代码。
NSString *returnvalue = [webView stringByevaluatingJavascriptFromString:@"your javascript pre string here"];
有关官方UIWebView文档的更多详细信息。
2.从JS执行Objective-C方法
不幸的是,这稍微复杂一点,因为Mac OSX上不存在相同的windowscriptObject属性(和类),因此两者之间无法完全通信。
但是,您可以轻松地从javascript自定义网址进行调用,例如:
window.location = yourscheme://callfunction/parameter1/parameter2?parameter3=value
并从Objective-C拦截它:
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { NSURL *URL = [request URL]; if ([[URL scheme] isEqualToString:@"yourscheme"]) { // parse the rest of the URL object and execute functions } }这虽然没有达到应有的效果(或使用windowscriptObject),但它可以工作。
3.收听来自Objective-C的本地JS事件(例如DOM ready事件)
从上面的解释中,您可以看到,如果要执行此操作,则必须创建一些Javascript代码,将其附加到要监视的事件上,然后调用正确的
window.location调用然后将其拦截。
同样,它不是很干净,但是可以工作。



