H5 页面挨嵌入各种各样的广告, 有时有, 有时没有, 这个很烦人, 网上找了找, 有几种说法和几种解决方法
1.DNS 劫持 .
html5 页面被电信运营商进行 DNS 劫持植入广告, 建议打电话给电信运营商. 这招我试过, 不管用, 他们都在踢皮球, 到底是运营商或代理商干的,, 还是内部人干, 很难追求到源头.
2.HTTP 劫持 .
可能也有这个原因, 建议使用 HTTPS, HTTPS 成本不算高, 一年几百块至几千块的, 能有效拦截嵌入广告. 但不彻底, 照样有嵌入广告的情况, 具体原因不详.
3. 第三方包植入广告.
不排除第三方的包有植入广告的代码, 但这个不好找, 一个项目的 npm 包, 可能 1000 多个~~
不过植入的广告都会有一个共同点, 都有一个 iframe
所以有如下解决方案: CSS 代码
- /* 抢先 隐藏 iframe */
- body iframe {display: none;}
js 代码
- var del_times = 0, deTimer = null;
- function adGo() {
- var iframe = document.getElementsByTagName('iframe')[0];
- if(iframe){
- console.log(iframe)
- var bodyNode = {tagName:''}, iframeParent, targetNode = iframe.parentNode;
- while (bodyNode.tagName != 'BODY'){
- bodyNode = targetNode;
- if(bodyNode.tagName != 'BODY'){
- iframeParent = targetNode;
- targetNode = targetNode.parentNode;
- }
- }
- if(iframeParent) // 如果 iframe 有父类
- bodyNode.removeChild(iframeParent);
- else
- bodyNode.removeChild(iframe);
- }
- del_times++;
- if (del_times> 10) window.clearInterval(deTimer)
- }
- // 抢先 删除 嵌入广告
- (function(){adGo();}())
- deTimer = self.setInterval(adGo, 200);
把代码加到 body 内, 记得加 script 标签包裹噢, 或者通过 script 引入
来源: http://www.qdfuns.com/article/33760/7938af4f75f19c0b45df38ab2bfb5613.html