【发布时间】:2011-11-09 02:43:52
【问题描述】:
有什么方法可以访问 Android 的 WebView 中的 DOM 结构?我需要它来检查页面上是否存在某些 DOM 对象,然后触发一些事件。
谢谢!
【问题讨论】:
标签: android dom android-webview
有什么方法可以访问 Android 的 WebView 中的 DOM 结构?我需要它来检查页面上是否存在某些 DOM 对象,然后触发一些事件。
谢谢!
【问题讨论】:
标签: android dom android-webview
不容易。
您可以调用loadUrl("javascript:..."),其中... 是要在当前网页中执行的一大块JavaScript 代码。如果您的“触发某些事件”是在网页的上下文中,那么这可能就足够了。如果您需要 Java 代码来“触发一些事件”,您还需要使用 addJavaScriptInterface() 创建一个 JavaScript->Java 桥对象并让您的 loadUrl("javascript:...") 代码调用它,以将您的数据返回到 Java。
【讨论】:
addJavaScriptInterface() 将 Java 对象添加为合成 JavaScript 全局,并让您传递给 loadUrl("javascript:...") 的 JavaScript 调用该全局上的方法以传递返回值。
addJavascriptInterface(new WebviewJSInterface(), JS_INTERFACE);
private class WebviewJSInterface
{
@JavascriptInterface
public void processHTML(String output)
{
Log.d("log", "hello: " +output);
}
}
@Override
public void onPageFinished(WebView view, String url)
{
loadUrl("javascript:window. " + JS_INTERFACE + ".processHTML(document.getElementsByTagName('body')[0].innerHTML);");
super.onPageFinished(view, url);
}
【讨论】: