我想创建一个应用程序,将网页中的内容加载到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标签使用adblocker,但这对我没有帮助。请给我一些克服这个问题的想法。
感谢。
答案 0 :(得分:18)
谢谢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");
这解决了我的目的,很容易使用。
答案 1 :(得分:2)
检查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中加载
答案 2 :(得分: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中隐藏我的类。
我希望这会对某人有所帮助。