很久没有关注www.51.net的免费空间的广告了,最近一直挺忙,今天抽出点时间把他的代码又分析了一下:本文来自www.e3i5.Com
1.免费空间去掉了弹出式的广告。(省了俺不少力气)
2.但还是存在DIV层广告。(咱还是把它过滤了)
3.还有可恶的插件。(具体的功能还在测试中)
原版本中的窗口过滤代码被很多转载站点改为其广告窗口使用,使程序失去了广告屏蔽功能,呵呵,有这个必要吗?
http://www.e3i5.com/display/js/0005/banads.asp
有需要的可以关闭脚本功能,查看一下源代码,可能对你在其他方面的脚本特效有帮助。
新代码和原来写代码有点区别,原来是对层的隐藏,现在是将层内容完全删除。使用的脚本函数是:innerHTML 。对此函数比较陌生的朋友可以在GOOGLE里搜索一些脚本教程来认识一下innerHTMLd的解释和用法,这里就不再多讲。
新代码对层的属性加以判断,免除了使用代码后,连自己的层也不能使用的缺点。对于此功能,先给出一个简单的实例,过段时间全部测试完成了,我们再将所有的代码全部发出。
对于插件广告来说,我们对此测试了很久。对于高版本的IE,如IE6.0 SP1,我们始终不能对插件进行一个比较好的屏蔽。相对的如果采用插件屏蔽将对网页内的FLASH来说是一个灾难。对此在程序进行插件屏蔽的同时增加了对51.NET插件的一个属性检测,使网页内的正常OBJECT标签能正常工作。
经过我们测试,整个代码对插件的过滤效果还是有限制的。并不是所有的浏览器,所有版本的IE都对代码能正确执行。IE5.0版本的IE我们通过了测试,对于高版本的IE我们还在修改出更好过滤代码。
对于COOKEIS,51.NET的广告使用COOKIES在本地做为广告验证的依据。我们在原有的COOKEIS写操作写,增加了对COOKIES检测的功能并增长COOKIES的保存时间。
新代码不仅仅对51.net站点免费空间广告有过滤作用,对于其他一些免费空间的广告也有一定的作用。相对于使用层来加载广告的都可以使用该段代码进行广告的屏蔽。当然过一段时间我们会出一份可以各空间共享的代码,毕竟还是专一的代码好。:)
以下是代码的主要部分:
<!- 切记将广告过滤代码放到网页的最下端 -->
<script language="Javascript">
/***************************************************************
* Put This Code In The Bottom Of The Page.
* You Can Use This Word for your DIV''s Attribute,Or You Can
* Change It By Yourself.But Your DIV''s Attribute Must be Fixed
* The Words, Which Your Writed In The Following Array!
* eg. var Crstr="e3i5,fqy"
* You''d Better Insert Two Elements In The Array,We Update It Later!
* CopyRight WWW.E3I5.COM 20:45 2005-4-23
***************************************************************/
var Crstr="e3i5,fqy";
// Please Don''t Change The Following Code
try
{
var e3i5 = document.getElementsByTagName("div");
var fqy=e3i5.length;
var s=Crstr.split(",")
for(j=0;j<s.length;j++)
{
for (i=0;i<fqy;i++)
{
if(e3i5[i].getAttribute("id")!=s[j] && e3i5[i].getAttribute("id")!=s[j+1])
{
e3i5[i].innerHTML="";
}
}
}
}
catch(e){}
try //Test This Long Time,Because It Can''t Be Exchanged By The Code.
{
var f9y = document.getElementsByTagName("OBJECT");
var net = f9y.length
for (var i=0;i<net;i++)
{
var anchor = f9y[i];
if (anchor.getAttribute("codebase").indexOf("51.net")!=-1)
{
anchor.innerHTML="";
anchor.outerHTML="";
}
}
}
catch(e){}
try
{
var cook = document.cookie;
if (cook)
{
var cValues = cook.split('';'');
for(i=0;i<cValues.length;i++)
{
if (cValues[i].match(/ad_lastPP/))
{
var data = new Date();
var _data = data.getTime()+100*600*600000;
data.setTime(_data);
document.cookie = ''ad_lastPP=1; expires=''+data.toGMTString();
}
}
}
}
catch(e){}
function err()
{
window.onerror="return false";
}
err();
</script>
对代码的一些简单的说明:
var Crstr="e3i5,fqy"; //这一句是定义自己使用层的ID值,避免使用层时也被代码过滤掉
用法是:你在网页内的其他DIV层(如果你使用层的话),需要用你定义的ID属性进行标识。如”
<div id="e3i5">文字</div> 这样,这个层就不会被删除。更详细的请看演示页面源代码。
除了以上这句外所有的代码均不可修改,否则将失去屏蔽功能,并产生大量的脚本错误。虽然我们做了异常捕捉,但意外的循环错误会使你的IE非法操作。本文来自www.e3i5.com
请尽量保留我们的版权信息。谢谢。如果觉得代码过长,请将<script></script>之间的代码保存为js文件,在页面中做为外部调用即可,形如:<script src=clearads.js></script>
注1:保存代码时不要直接复制粘贴到你的网页编辑器中(如Frontpage),先将代码复制粘贴到记事本,然后在剪切到编辑器中,否则代码会被做HTMLencode处理,而失去其作用.(很多用户因为如此抱怨代码不能使用).
注2:如果使用代码出现问题请到本站留言,复制代码请尽量使用本站代码,避免转载的复制错误以及无意的代码过滤。一部分用户复制过其他站点转载的代码,由于其站点对脚本进行过转化,使得部分代码被做了HTMLencode处理,从而使代码失效.
呵呵,差点忘记了,还有个演示地址:http://e3i5.51.net/clearads.html 本
http://netadmin.77169.com/HTML/20050826010030.html