JavaScript函数劫持过滤页内广告

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

posted @ 2009-03-01 20:58  bits  阅读(808)  评论(0编辑  收藏  举报