JavaScript函数劫持过滤页内广告

it2022-05-05  154

终于又开始写Blog了。

摸了一下午模版,发现这个Blog的自由度还是相当大的,而且还支持语法加亮,美中不足的是回复框下面居然有一系列广告。于是想了个办法进行页面元素过滤,其原理就是劫持 document.write() 函数,对输出的内容进行过滤,只要是包含指定字符串的,一律封杀。

效果还比较理想,看图:

 

代码也很短,配合页首、页脚两段JS脚本,就可以完成任务。

页首Html代码:

< script type = " text/javascript " > /*  广告过滤  */ var  my_write  =  document.write; document.write  =   function (str) {      if  (str.indexOf( " .yeshj.com " >=   0 ) {          //  过滤包含 .yeshj.com 的输出     } else   if  (str.indexOf( " /pagead/ " >=   0 ) {          //  过滤 google ad: /pagead/     } else  {          //  正常流程         my_write(str);      } } < / script>

 

页脚Html代码:

< script type = " text/javascript " > function  CleanDIV() {      try  {         document.getElementById( " relative_posts " ).innerHTML = "" ;         document.getElementById( " relative_posts " ).style.display  =   " none " ;         document.getElementById( " div_a4_ads " ).innerHTML = "" ;         document.getElementById( " div_a4_ads " ).style.display  =   " none " ;     }  catch (e) {     } } CleanDIV(); < / script>

 

最后再向CSS里加入这个,屏蔽两个有ClassName的DIV:

/* 页面底部广告过滤 */ .CommentBoxNav  {     display : none ; } .itnews  {     display : none ; }

 

重点在于页首脚本里的 document.write = function(str) {},这句将 write() 函数给替换了,之后想怎么处理都是自由发挥了,比如用正则表达式来匹配、替换关键字... OK,自己看效果吧。

 

另外,关于JS函数劫持,想了解更多的可以去这里看看:http://www.xfocus.net/articles/200712/963.html

转载于:https://www.cnblogs.com/bits/archive/2009/03/01/JS_Inject-document_write.html


最新回复(0)