iOS的原生应用程序和网页的JavaScript之间的通信

我有一个网页加载在一个UIWebView,并且页面的JavaScript函数需要从本机iOs应用程序,一个NSString的数据。 Js函数如何访问本地应用程序中的数据?

谢谢,

lvreiny

你可以在Obj-C的UIWebView中执行JavaScript。 只需调用[webView stringByEvaluatingJavaScriptFromString:@"myJavaScript"];

我可以想象一个像这样的设置:

网页

 <html> <head> <script type="text/javascript"> function callmeFromObjC(para1) { // do something alert(para1); } </script> </head> <body> </body> </html> 

Objective-C的

 NSString *myParameter = @"myParameter"; [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"callmeFromObjC('%@')", myParameter]]; 

使用WebViewJavaScriptBridge可以实现javaScript和iOS之间的双向通信。

查看下面的链接WebViewJavaScriptBridge。

我使用这个桥梁为iOS和JS之间的通信应用程序,反之亦然。

https://github.com/marcuswestin/WebViewJavascriptBridge

我创build了一个iOS / JS库来帮助简化这个过程 – 也就是使用类似的方法在两个方向上进行通信。 你可以在这里查看: https : //github.com/tcoulter/jockeyjs

让JavaScript加载您的应用截取的自定义url。 它可以parsing它,准备数据并通过stringByEvaluatingJavaScriptFromString:传递给你的网页。

 [webView loadHTMLString:@"<script src=\"filename.js\"></script>" baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]]; NSString *result = [webView stringByEvaluatingJavaScriptFromString:@"function(parameter)"]; 

给iOS提供反馈

 window.location = customprefix://function/parameter=value - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { if ([[URL scheme] isEqualToString:@"customprefix"]) { // handle function name and paramters } } 

我也写了一个关于如何在iOS中调用和处理不同的JavaScript函数的指南。 http://www.dplusmpage.com/2012/07/20/execute-javascript-on-ios/

这个示例代码在这里可用,你可以检查它….非常有用

http://ramkulkarni.com/blog/framework-for-interacting-with-embedded-webview-in-ios-application/