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之间的通信应用程序,反之亦然。
我创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/