有一个网页我用webview提取,但是我想隐藏顶部的1文本链接。有没有办法做到这一点?链接在体内,所以我不能整体隐藏身体元素。 网页是全文,底部是一个小图片,但每次加载时都会生成文本,因此我不能只复制/粘贴正文。
由于
答案 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')将删除图像。
答案 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';})()");