两句代码去somee广告 ----谈怎样去除免费空间的广告

 

首先声明,somee是一个好空间,30M,支持asp,asp.net,access,fso....偶以前也是somee的用户。只是因somee不能绑定偶的域名,所以才放弃了这个好地方。


言归正传,我们先分析一下somee的插入广告形式。

两句代码去somee广告  ——谈怎样去除免费空间的广告
驿博网志  http://blog.transbaker.net  作者:zzn

偶最开始使用somee的时候,广告是插入在<body>标签的后面的。
假如你有如下一段html代码生成,那么代码将插入在提示位置。

 

< head >
</ head >
< body > <!-- 此处将被插入广告代码 -->
  
< table >
    
< tr >
      
< td > this is a test </ td >
    
</ tr >
  
</ table >
</ body >



要去除这种形势的代码,可以用两个方法。
1、既然Web服务器识别body标签的末标签。那么,利用浏览器的纠错功能,我们插入一个伪body标签在一个隐藏的层当中。将上述的HTML改为

 

< head >
</ head >
< div  id ="Layer1"  style ="position:absolute; width:0px; height:0px; z-index:1;dislay:none" >< body ></ div >
< body >
  
< table >
    
< tr >
      
< td > this is a test </ td >
    
</ tr >
  
</ table >
</ body >

 

这样,广告代码会插入在第一个<body>后面。而浏览器自动把第一个<body>以后后面的广告代码当作是Layer1里面的内容。于是就不会显示出来了。

好处:使用Layer控制,下载的时候直接执行静态HTML,通过预设的css直接屏蔽,视觉上不会出现任何“污染”。

2、这个方法也就是比较常见的方法,也是比较灵活的方法。
通常不管是什么插入广告,都会有广告的特征码。因为HTML的标签大多是成对出现的,外层的标签对内层的标签有限制作用。所以,我们通过特征码找到插入代码的最外层标签,然后使用css把它设置为不可见即可屏蔽掉该广告。今天写这篇文章的时候,somee的广告插入方式已经作了变化,我会在后面补充说明。

通过打开一个被加入了广告的的页面,我们很容易找到广告代码的位置,而且通常这段广告都会有注释性的标记。当然注释性的标记不是我们的重点,不影响浏览的一切东西我们都不在乎。:)

找到代码最外层标签的方法,具体有下面几种:
a、有id或者name的。这种最方便,使用document.all.id或者document.all.name就可以找到了。
如广告代码如下:

< div  id ="adlayer"   >
  some Advertisement code 
</ div >



< div  name ="adlayer"   >
  some Advertisement code 
</ div >

 

则使用

< script > document.all.adlayer.style.display  =  'none'  </ script >


就可以解决问题了。

这里面有一种非常罕见的情况,假如你的本身的网页生成的html中就有这个id或name的标签。你就需要再麻烦一下,分析一下id和name的位置。按照html从上到下的看,id或者name相同的标签,index依次是从0开始的。把下面代码中[0]修改为广告代码中对应标签的位置就行了

< script > document.all.adlayer[ 0 ].style.display  =  'none'  </ script >

 

另外一种方法就是使用GetElementsById[id],GetElementsByName[name]。比如上示的代码可以写为:

< script > document.GetElementsById['adlayer'][ 0 ].style.display  =  'none' </ script >

 

b、没有id或者name。这种比较罕见。不过也不是没有办法。你最好先下载一个被插入了广告的页面,修改一下html文件,在广告代码的最外层标签添加一个唯一的标记便于寻找,如添加id="HUR"。然后使用如下代码找到这个标签的位置。

 

< script >
var  divs  =  document.getElementsByTagName('div');  // 假设广告代码是嵌套在"<div>"标签中。
for  ( var  divindex = 0 ;divindex ++ ;divindex < divs.length)
{
 
var  tdiv  =  divs[divindex];
 
if  (tdiv.id  ==  'HUR')  // 找到标签
 {
  alert(divindex); 
// 输出标签索引号
   break ;
 }
}
</ script >

 

在IE下运行之后,通过alert()出来的那个对话框,记住索引号。再回头修改上面的代码为最后的去除广告代码。

 

< script >
var  divs  =  document.getElementsByTagName('div');  // 假设广告代码是嵌套在"<div>"标签中。
divs(divindex).style.display  =  'none';   // divindex为刚才得到的索引号。
</ script >

 

经过以上的这些步骤,大部分插入性的广告你都可以应付了,那么 somee 的广告问题应该也就迎刃而解了。但是....

html是顺序执行的,即代码从上到下被下载执行。目前的somee将广告插入到文档最末。我使用了伪标签,发现它不是识别</html>为文档最末的!即当发生请求时,somee服务器文档读入到内存,在发布的时候自动在该段内存最末添加上它的广告代码!HTML是从上往下执行的,预先执行的命令对后出现标签无效。但是,最末的文档是服务器加入的,我们不能再该段文档中插入触发器,怎么办呢?

我们先把最后的去除广告的代码放在一个单独的js文件中。这样,如果空间商变化广告插入模式,我们也不用全站点的文档都作修改,只需要修改这个包含有效代码的文档就行了。

目前的somee的广告代码如下,插入在文档最末。

<!-- SCRIPT GENERATED BY SERVER! PLEASE REMOVE -->
< script  language ="JavaScript"  src ="http://ads.mgmt.somee.com/serveimages/layerad1/adscrpt1.js" ></ script >
< div  id ="y_gc_div_adcntr"  style ="visibility:visible;background-color:#FFFFFF;margin:0px;padding:0px;width:195px;z-index:30000;top:0px;float:right;" >< div  id ="y_gc_div_mast"  style ="border:000001px solid; width: 195px;visibility: visible;background-color: #FFFFFF;position: absolute;z-index: 30001;top: 0px" >
  . .. . . .. . . . . . .. . . . .. . . . .//省略的代码    
ExpandedBlockStart.gifContractedBlock.gif
</ div ></ div ></ div >< script  language  = javascript>if(!checkFrame())  closeAu('y_gc_div_au1');</script >
<!--SCRIPT GENERATED BY SERVER! PLEASE REMOVE-->



问题回到本文的题目了。
我们存储一下代码为文件 clearAd.js:

// File Start
document.all.y_gc_div_adcntr.style.display = 'none'
// File End

 

我们在页面文件的head中插入如下代码:

< script  src ='clearAd.js'  defer ></ script >

 

这个defer很重要,它表示将在代码下载完毕后再执行。这样,刚才的问题也就真正解决了。

OK,很容易吧?站长们,还等什么,去除掉你们不喜欢的广告吧!

注:效果展示:偶的somee空间http://transbaker.somee.com的首页已经添加了去除广告代码。

 

转载于:https://www.cnblogs.com/workingbird/archive/2005/01/04/86326.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值