我在UIWebView中加载了一个网页,该页面的javascript函数需要来自本机iOs应用程序(NSString)的数据。 Js函数如何访问本机应用程序中的数据?
谢谢,
lvreiny
答案 0 :(得分:11)
您可以在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>
<强>目标C 强>
NSString *myParameter = @"myParameter";
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"callmeFromObjC('%@')", myParameter]];
答案 1 :(得分:7)
使用WebViewJavaScriptBridge,您可以实现javaScript和iOS之间的双向通信。
请查看以下链接以获取WebViewJavaScriptBridge。
我将这个桥接器用于iOS和JS之间的通信应用程序,反之亦然。
答案 2 :(得分:4)
我创建了一个iOS / JS库来帮助简化这一过程 - 也就是说,使用类似方法在两个方向上进行通信。您可以在此处查看:https://github.com/tcoulter/jockeyjs
答案 3 :(得分:1)
让javascript加载您的应用拦截的自定义网址。它可以解析它,准备数据并通过stringByEvaluatingJavaScriptFromString:
将其传递到您的网页。
答案 4 :(得分:1)
[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/
答案 5 :(得分:0)
此处提供此示例代码,您可以查看它......非常有用
http://ramkulkarni.com/blog/framework-for-interacting-with-embedded-webview-in-ios-application/