有什么方法可以隐藏webview中的元素吗? (机器人)

时间:2010-06-12 20:02:45

标签: android webview

有一个网页我用webview提取,但是我想隐藏顶部的1文本链接。有没有办法做到这一点?链接在体内,所以我不能整体隐藏身体元素。 网页是全文,底部是一个小图片,但每次加载时都会生成文本,因此我不能只复制/粘贴正文。

由于

3 个答案:

答案 0 :(得分:21)

final WebView webview = (WebView)findViewById(R.id.browser);

    webview.getSettings().setJavaScriptEnabled(true);

    webview.setWebViewClient(new WebViewClient() {
     @Override
    public void onPageFinished(WebView view, String url)
    {
        // hide element by class name
        webview.loadUrl("javascript:(function() { " +
                "document.getElementsByClassName('your_class_name')[0].style.display='none'; })()");
        // hide element by id
        webview.loadUrl("javascript:(function() { " +
                "document.getElementById('your_id').style.display='none';})()");

    }
    });

webview.loadUrl(url);

答案 1 :(得分:6)

我明白了! 通过注入javascript我必须使用

  

webview.loadUrl(“JavaScript的:(()的函数   {“+                       “document.getElementsByTagName( 'A')[0] .style.display   ='无'; “+                       “})()”);

删除链接(代码)。用('img')替换('a')将删除图像。

(谢谢lexanderA - Injecting JavaScript into a WebView

答案 2 :(得分:0)

我使用WebViewSuite

并实施

webViewSuite = findViewById(R.id.webViewSuite);
webViewSuite.startLoading("https://example.com/blog/");

并向WebViewSuite添加了customizeClient

webViewSuite.customizeClient(new WebViewSuite.WebViewSuiteCallback() {
      @Override
      public void onPageStarted(WebView view, String url, Bitmap favicon) {
      }

      @Override
      public void onPageFinished(WebView view, String url) {
        hideSomeSectionOfBlog(view);
      }

      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;
      }
    });

并使用功能隐藏元素

 private void hideSomeSectionOfBlog(WebView view) {
    view.getSettings().setJavaScriptEnabled(true);
    view.loadUrl("javascript:(function() { " +
      "document.getElementById('Top_bar').style.display='none';" +
      "document.getElementById('Filters').style.display='none';" +
      "document.getElementById('Footer').style.display='none';" +
      "document.getElementsByClassName('Header').style.display='none';" +
      "})()");
  }

希望有用

注意: :如果id不存在,JavaScript会出错。 例如,如果过滤器不存在id,则页脚和页眉不显示='none' 如果您不信任这样的分隔

view.loadUrl("javascript:(function() { " +
      "document.getElementById('Footer').style.display='none';})()");
view.loadUrl("javascript:(function() { " +
      "document.getElementById('Header').style.display='none';})()");