内容纲要
Js过滤广告标签
问题
webView.loadUrl();能加载网页,但是网页中的广告html标签却也一并显示了,如下
文章地址进行查看
JavaScript过滤
首先找到广告的Html标签
浏览器内按F12可以看到各种相关信息,找到如下内容
### 代码实现
private void hidenBanner(WebView view) {
//JS,过滤带广告的Div标签(Daily)
String javascript = "javascript:function hideBanner() {" +
"var banners = document.getElementsByClassName('Daily');" +
"var firstbanner = banners[0];" +
"firstbanner.remove();" + "}";
view.loadUrl(javascript);
view.loadUrl("javascript:hideBanner();");
}
private void hidenViewMore(WebView view) {
//JS,过滤带广告的标签(view-more)
String javascript = "javascript:function hideViewMore() {" +
"var ViewMore = document.getElementsByClassName('view-more');" +
"var firstViewMore = ViewMore[0];" +
"firstViewMore.remove();" + "}";
view.loadUrl(javascript);
view.loadUrl("javascript:hideViewMore();");
}
WebView加载Url时通过调用上述函数,即可去除两个对应的广告
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("myInfo", "url: " + url);
//view.loadUrl(url);
return true;
}
@Override
public void onLoadResource(WebView view, String url) {
//在加载资源时过滤广告标签
//对网页加载速度稍有影响
hidenBanner(view);
hidenViewMore(view);
super.onLoadResource(view, url);
}
@Override
public void onPageFinished(WebView view, String url)
{
//经尝试,在页面刷新完成后才执行Js删去广告,体验不好,不采用
// hidenBanner(view);
// hidenViewMore(view);
super.onPageFinished(view, url);
}
});
//加载url
webView.loadUrl(post_url);
}