终于又开始写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