我有一个网页加载在UIWebView中,并且该页面的JavaScript函数需要来自本机iOs应用程序,NSString的数据。 Js函数如何访问本机应用程序中的数据?iOS的原生应用程序和网页的JavaScript之间的通信javascript
感谢,
lvreiny
我有一个网页加载在UIWebView中,并且该页面的JavaScript函数需要来自本机iOs应用程序,NSString的数据。 Js函数如何访问本机应用程序中的数据?iOS的原生应用程序和网页的JavaScript之间的通信javascript
感谢,
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]];
我们的JavaScript加载自定义URL,您的应用拦截。它可以解析它,准备数据并通过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/
借助WebViewJavaScriptBridge,您可以实现javaScript和iOS之间的双向通信。
请检查以下链接以查看WebViewJavaScriptBridge。
我用这个桥为我的iOS和JS之间的通信应用之一,反之亦然。
我创建了一个iOS/JS库来帮助简化这个过程 - 也就是说,使用类似的方法在两个方向上进行通信。您可以点击此处查看:https://github.com/tcoulter/jockeyjs
示例代码,这是可在这里,你可以检查一下....非常有用
http://ramkulkarni.com/blog/framework-for-interacting-with-embedded-webview-in-ios-application/
谢谢,它的工作原理。有没有一种方法可以从JavaScript调用iOS的功能? – jAckOdE
你甚至读过我的回答吗?我知道它没有示例代码,但它对您评论中的问题有答案。 –
实现一个像Johan Kool建议的自定义URL方案,然后像这样从JS“myapp:// parameter1/parameter2/parameter3”调用你的url来使这个工作你还需要实现方法“ - (BOOL)application:(UIApplication *)应用程序handleOpenURL:(NSURL *)url“在您的应用程序委托。以下是一个完整的教程:http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html –