当前位置:网站首页 > 横幅广告 > 正文

用js屏蔽脚本加载的广告

作者:admin发布时间:2021-09-11分类:横幅广告浏览:评论:24


导读:3.思路扩展可能会误伤友军比如要加载百度的脚本等当自己需要用到这个时可以考虑监控的值的变化来过滤脚本但是通过定义各种规则来监听都会报错所以只能换一种思路在被添加前做处理。/***禁...

用js屏蔽脚本加载的广告

3.思路扩展

可能会误伤友军比如要加载百度的脚本等当自己需要用到这个时可以考虑监控的值的变化来过滤脚本但是通过定义各种规则来监听都会报错所以只能换一种思路在被添加前做处理。

/**

*禁用动态添加脚本防止广告加载

*

*?true()|()|(off)

*paramrulearray配置允许(valid)|不允许(invalid)的脚本规则支持regex、string、function

*/(function(valid,rule){if(typeofElementundefined)console.log(IE8以下浏览器无效varoriginnewRegExp(^location.origin),EleElement;each([appendChild,insertBefore,insertAfter],proxy);functionproxy(prop){varproxy_objEle.prototype[prop];Ele.prototype[prop]function(elem){if(!elem.children.length){vartagelem.tagName.toLowerCase();if(tagscriptisBanScript(elem)){console.log(禁用脚本elem.src);varsubstitutedocument.createElement(scriptsubstitute.innerHTML//禁用脚本elem.src;elemsubstitute;}}returnproxy_obj.apply(this,arguments);};}functionisBanScript(script){if(origin.test(script.src))returnfalse;returnvalideach(rule,match);functionmatch(val){vartypetypeofval;if(typestring){if(script.srcval)returntrue;}elseif(typefunction){if(val(script))returntrue;}else{if(val.test(script.src))returntrue;}returnfalse;}}functioneach(arr,fn){if(arr){for(vari0,narr.length;ii){if(fn.call(arr[i],arr[i],i)true)returnfalse;}}returntrue;}})(true,[]);//表示有效的脚本规则列表


已有24位网友发表了看法:

欢迎 发表评论:

横幅广告排行
最近发表
标签列表