【问题标题】:Display a part of the webpage on the webview android在webview android上显示部分网页
【发布时间】:2012-08-28 18:50:46
【问题描述】:

我想制作一个应用程序,将网页中的内容加载到 webview 中。我只想在整个 webview 中显示特定的东西,而不是网页的全部内容。

这是一个例子。如果我使用:http://us.m.yahoo.com/w/search%3B_ylt=A2KL8xs0vUBQMg0AwAkp89w4?submit=oneSearch&.intl=us&.lang=en&.tsrc=yahoo&.sep=fp&p=digital+cameras&x=0&y=0 作为 webview 的 URL,它会在 webview 上加载页面的所有内容。但我想删除页面的横幅并将其显示在我的应用程序的 webview 上。

我曾尝试使用带有 CSS 标记的广告拦截器,但这对我没有帮助。请给我一些解决这个问题的想法。

谢谢。

【问题讨论】:

    标签: android webview android-webview


    【解决方案1】:

    感谢 Zyber 的回答。我已经通过在 android 中的 WebView 代码中注入 JavaScript 来解决它。

    final WebView webview = (WebView)findViewById(R.id.browser);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebViewClient(new WebViewClient() {
     @Override
    public void onPageFinished(WebView view, String url)
    {
        webview.loadUrl("javascript:(function() { " +
                "document.getElementsByTagName('header')[0].style.display="none"; " +
                "})()");
    }
    });
    webview.loadUrl("http://code.google.com/android");
    

    这解决了我的目的,而且很容易使用。

    【讨论】:

    • "document.getElementsByTagName('header')[0].style.display="none"; " + "})()"); is header 是 div 类的名称,没有在 studio 中无法解析
    • 你的方法很好。但它会产生颠簸的输出。
    【解决方案2】:

    我得到了添加这个的解决方案:

    view.getSettings().setJavaScriptEnabled(true);
            view.setWebViewClient(new WebViewClient() {
    
                @Override
                public void onPageFinished(WebView view, String url)
                {
                    view.loadUrl("javascript:(function() { " +
                            "var head = document.getElementsByClassName('header')[0].style.display='none'; " +
                            "var head = document.getElementsByClassName('blog-sidebar')[0].style.display='none'; " +
                            "var head = document.getElementsByClassName('footer-container')[0].style.display='none'; " +
                            "})()");
    
                }
            });
            view.loadUrl("your url");

    添加 (var head =) 看起来像是在 webview 中隐藏我的课程。

    我希望这对某人有所帮助。

    【讨论】:

      【解决方案3】:

      check Jsoup 它提供了一个库,提供了一种从网页中提取 Html 元素的简单方法

      DefaultHttpClient client = new DefaultHttpClient();
      HttpGet get = new HttpGet(url.toURI());
      HttpResponse resp = client.execute(get);
      
      String content = EntityUtils.toString(resp.getEntity());
      Document doc = Jsoup.parse(content);
      Elements ele = doc.select("div.classname");
      

      此示例执行一个 Http GET,然后提取一个具有“classname”类的 Div 元素,然后您可以将其加载到您的 webview 中

      【讨论】:

      • 你是如何把这个元素放到 webview 中的?你能把例子完整吗?
      • 这不回答 OP 问题。使用 Jsoup 只是为了解析加载的 html。您必须使用 webView 两次才能加载它
      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多