webview过滤广告终极招式
首先明白WebViewClient干啥的?
这货用于辅助WebView,处理各种通知、请求等事件
今天就是要重写她的方法!
这里主要交给javascript完成,那么javascript支持一定不能少!
WebSettings webSetting = webview.getSettings();
webSetting.setJavaScriptEnabled(true);
广告到底是啥?
明白了吧,就是一些div或者其他标签的块~~ 我们要把这些块去除 ~~
那么过滤广告的时机是何时?
页面加载完成的时候
public void onPageFinished(WebView view, String url) {blockAds(view);//过滤}
blockAds首要的事情是view.getUrl(),通过url地址去匹配广告标签(Html标签属性)
关键就是构建javascript代码,懂web的都知道,Javascript中提供了访问文档标签的方法
StringBuilder sb = new StringBuilder();sb.append("javascript: ");String[] alltag = tags.split(",");for (int i = 0; i < alltag.length; i++) {String adTag = alltag[i];if (adTag.trim().length() > 0) {adTag = adTag.trim();if (adTag.contains("#")) {adTag = adTag.substring(adTag.indexOf("#") + 1);if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {//19sb.append("document.getElementById(\'").append(adTag).append("\').innerHTML=\'\';");} else {sb.append("document.getElementById(\'").append(adTag).append("\').remove();");}} else if (adTag.contains(".")) {adTag = adTag.substring(adTag.indexOf(".") + 1);if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {sb.append("var esc=document.getElementsByClassName(\'").append(adTag).append("\');for (i in esc){esc[i].innerHTML=\'\';};");} else {sb.append("var esc=document.getElementsByClassName(\'").append(adTag).append("\');for (var i = esc.length - 1; i >= 0; i--){esc[i].remove();};");}} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {sb.append("var esc=document.getElementsByTagName(\'").append(adTag).append("\');for (i in esc){esc[i].innerHTML=\'\';};");} else {sb.append("var esc=document.getElementsByTagName(\'").append(adTag).append("\');for (var i = esc.length - 1; i >= 0; i--){esc[i].remove();};");}}}
历史大事件
Android从4.4起提供基于Chromium实现的WebView。此前WebView基于WebKit实现。WebKit提供网页解析、布局和绘制以及JS运行等基础功能。Chromium在WebKit基础上为WebView提供进程、线程和渲染等基础构架。(大概是因为Android部门负责人从Andy Rubin变成了Chrome部门的主管Sundar Pichai了(现任谷歌CEO)吧)。
webview过滤广告终极招式相关推荐
- webview过滤广告
webview.getSettings().setUseWideViewPort(true);//web1就是你自己定义的窗口对象. webview.getSettings().setLoadWith ...
- URL欺骗的惯用招式(经典网络知识)
URL欺骗的惯用招式(经典网络知识) 我叫URL,即"Uniform Resource Locators",意思是统一资源定位器.地址栏中的网址就属于我URL的一种表达方式.基本上 ...
- Android WebView显示广告
参考文档: 1.http://wangbaiyuan.cn/realization-of-android-webview-advertising-filtering.html#prettyPhoto ...
- Netty基础招式——ChannelHandler的最佳实践
本文是Netty系列第7篇 上一篇文章我们深入学习了Netty逻辑架构中的核心组件EventLoop和EventLoopGroup,掌握了Netty的线程模型,并且介绍了Netty4线程模型中的无锁串 ...
- 统计学习的三个招式:模型、策略和算法
统计学习的三个招式:模型.策略和算法 https://mp.weixin.qq.com/s/12yhAZ79i_ENAdtyOX63lQ 李航老师在统计学习方法中讲到:方法=模型+策略+算法 可以说模 ...
- 避免需求分析与定义误区的7个招式:作为产品新人,我所遇到的坑(续)
在需求分析和定义的过程中,作为产品新人的你也许和我一样陷入了误区之中,恨不得抽自己几个耳光?(参见前作需求分析与定义4大误区) 既然已经对可能的隐患有所了解,那么如何避免重蹈覆辙? 招式1:目标驱动, ...
- android设计招式之美,麦可网Android设计招式之美
相关课程: 麦可网Android设计招式之美 麦可网Android高级应用开发 麦可网Android面向对象技术 本套课程目录: 1 – 设计模式与Android框架设计a 2 – 设计模式与Andr ...
- Windows开发的内功和招式
Windows开发的内功和招式 最近一个月笔者休了大约两周的假期,期间没有学习新的开发技术,也没有去游山玩水,而是对自己的知识结构和Windows开发本身进行了一个深入的思考,收获颇多,在这里希望和大 ...
- 蒂法html5游戏,《最终幻想7:重制版》大量新截图:蒂法招式/支线任务
史克威尔日前为<最终幻想7:重制版>公布了大量的新截图和艺设图,以及新情报. 请输入图片描述 首先是两名熟悉的角色赤红十三和宝条博士.之后还有一些预购特典召唤兽,陆行鸟.宝石兽.仙人掌等等 ...
最新文章
- 听说苹果M1能打英伟达RTX?那跑个光追试试
- 设计模式--简单工厂模式
- APM - 零侵入监控Service服务
- 使用一个环境的或者半径异样消除器来进行异样消除
- 解析OpenShift的存储规划
- 如何用WinCC发送报警消息至钉钉
- 设置屏幕横屏_android设置横屏和竖屏的两种方法
- 6、PXE安装ESXI6.0
- 信息安全期末复习整理
- 委外订单--采购入库单不能记账
- 如何保护眼睛,可采用语音方式获取外界知识,并积极锻炼身体做到劳逸结合。
- java怎么获得今天日期,java怎么获取两年后的今天的日期
- q_i7p_co/index_php rmvb_某返利网站admin目录index.php文件混淆加密算法分析
- gcs服务 oracle,gcs resource
- Verilog/@符号什么意思
- 移动App与服务器安全通信
- 用天然气做燃料极空气做氧化极的燃料电池
- 计算机技术在物理教学中的应用,信息技术在物理教学中的运用案例与感悟
- 上海居转户 计算机中级职称,上海居转户中级经济师申请条件
- 【seo】网页开发 代码优化 3