11

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

这是一个例子。如果我使用:http ://us.m.yahoo.com/w/sea​​rch%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 标签的广告拦截器,但这对我没有帮助。请给我一些克服这个问题的想法。

谢谢。

4

3 回答 3

19

谢谢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");

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

于 2012-09-04T15:24:24.047 回答
4

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

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 中隐藏我的类。

我希望这对某人有帮助。

于 2018-04-12T11:23:47.173 回答
3

检查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 元素,然后您可以将其加载到您的 web 视图中

于 2012-09-04T13:27:19.517 回答