【问题标题】:Is there any way to get access to DOM structure in Android's WebView?有什么方法可以访问 Android 的 WebView 中的 DOM 结构?
【发布时间】:2011-11-09 02:43:52
【问题描述】:

有什么方法可以访问 Android 的 WebView 中的 DOM 结构?我需要它来检查页面上是否存在某些 DOM 对象,然后触发一些事件。

谢谢!

【问题讨论】:

    标签: android dom android-webview


    【解决方案1】:

    不容易。

    您可以调用loadUrl("javascript:..."),其中... 是要在当前网页中执行的一大块JavaScript 代码。如果您的“触发某些事件”是在网页的上下文中,那么这可能就足够了。如果您需要 Java 代码来“触发一些事件”,您还需要使用 addJavaScriptInterface() 创建一个 JavaScript->Java 桥对象并让您的 loadUrl("javascript:...") 代码调用它,以将您的数据返回到 Java。

    【讨论】:

    • @CrossleSong:这是不可能的。但是,您可以使用 addJavaScriptInterface() 将 Java 对象添加为合成 JavaScript 全局,并让您传递给 loadUrl("javascript:...") 的 JavaScript 调用该全局上的方法以传递返回值。
    【解决方案2】:
       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);
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      相关资源
      最近更新 更多