前言
以前自己建設博客的時候,出現一個問題,那就是動不動彈出廣告,不曉得這個是怎么查到我的站點的,但是加入了屏蔽js,就沒遇到了,在此分享。
正文
防止動態加載script腳本
(function () {
var createElement = document.createElement;
document.createElement = function (tag) {
switch (tag) {
case 'script':
console.log('禁用動態添加腳本,防止廣告加載');
break;
default:
return createElement.apply(this, arguments);
}
}
})();
iframe 廣告
//注入頁面的腳本文件
;
$(function() {
var clearAd = {
//由於manifest文件匹配規則只有通配沒有非功能,所以可在此處添加不想刪除廣告的頁面
checkUrl: function() {
var Checkflag = 0,
url = window.location.href;
//手動添加不需要清除廣告的域
var notDel = [
"www.baidu.com",
"taobao.com",
"tmall.com",
"jd.com"
];
//正則匹配
for (var i = 0; i < notDel.length; i++) {
var reg = new RegExp(notDel[i], "g");
if (reg.test(url)) {
console.log('This page does not clear ads.');
break;
} else {
if (i == notDel.length - 1) {
Checkflag = 1;
}
}
}
if (Checkflag == 1) {
this.clear();
this.findSomeAdPossible();
}
},
clear: function() {
console.log('Clear Start');
//此處可手動添加廣告框id名,去除頑疾ad必備
var ad_id_name = [
"cproIframe2001holder",
"cproIframe2002holder",
"cproIframe2003holder",
"cproIframe2004holder",
"cproIframe2005holder",
"cproIframe2006holder",
"cproIframe2007holder",
"cproIframe2008holder",
"cproIframe2009holder",
"id_300x250_banner_top",
"ads",
"google_image_div",
"mx_cs_71603_1261456",
"AC_TR86_71603",
"cproIframe_u2060917_1",
"content_right",
"left-promotion",
"top_ads",
"layerd"
];
//此處添加廣告框類名
var ad_css_name = [
"cproIframe_u410704_3",
"img_ad",
"hover_btn"
];
for (var i = 0; i < ad_id_name.length; i++) {
//使用remove刪除節點,提升性能
$('#' + ad_id_name[i]).remove();
}
for (var i = 0; i < ad_css_name.length; i++) {
$('.' + ad_css_name[i]).remove();
}
},
//簡單的智能算法
findSomeAdPossible: function() {
var sap = $('div iframe'),
ad_img = $('div script').parent().find('img,embed'),
float_img = $('div object').parent().find('img,embed');
this.arrayDel(sap, 360, 200);
this.arrayDel(ad_img, 350, 150);
this.arrayDel(float_img, 350, 150);
},
arrayDel: function(arr, conWidth, conHeight) {
var len = arr.length;
for (var i = 0; i < len; i++) {
var self = arr.eq(i);
if (self.width() <= conWidth || self.height() <= conHeight) {
self.remove();
}
}
},
init: function() {
this.checkUrl();
}
}
$(document).ready(function() {
clearAd.init();
//為防止ajax異步延時加載的廣告隔4s再清除一次
setTimeout(function() {
clearAd.init();
}, 4000)
});
})