【发布时间】:2014-10-14 23:11:10
【问题描述】:
如果我在我的 Android 或 iPhone 应用程序中加载了 webkit 视图,我可以在 webkit 的页面中来回传递数据吗?
例如,我可以从网络上拉下一个 html 视图并在该视图中填充我设备上存储的数据的表单吗?
【问题讨论】:
如果我在我的 Android 或 iPhone 应用程序中加载了 webkit 视图,我可以在 webkit 的页面中来回传递数据吗?
例如,我可以从网络上拉下一个 html 视图并在该视图中填充我设备上存储的数据的表单吗?
【问题讨论】:
是的,在 Android 中使用 addJavaScriptInterface()。
class MyInterface {
private String someData;
public String getData() { return someData; }
}
webview.addJavaScriptInterface(new MyInterface(), "myInterface");
在你的 webview 的 html 中。
<script type="text/javascript">
var someData = myInterface.getData();
</script>
顺便说一句,如果你使用的网页不是你的(这样你就不能修改它),你可以插入 javascript inline。例如:
webview.loadUrl("javascript:document.getElementById('someTextField').value = myInterface.getData();");
【讨论】:
对于 iPhone,您可以使用 stringByEvaluatingJavaScriptFromString 从 Objective-C 调用 JavaScript 函数。
例如,要获取名为“fname”的输入字段的值:
NSString * fString =[webView stringByEvaluatingJavaScriptFromString:@"document.getElementByName(\"fname\").value"];
NSLog(@"fString: %@",fString);
【讨论】: