使用

OK,在使用以下声明时,会使一个最常用的漂浮下拉广告失效

直接导致document.body.scrollTop永远等于0, body Scroll永远也不会引发。搜索了一下,发现了解决方案。

即是使用:document.documentElement.scrollTop 替代 document.body.scrollTop

article/document_body_doctype_switching_and_more/17/30655/” target=”_blank”>点这里查看老外的详细分析

以下是正确的漂浮广告下拉代码,在所谓的”W3C标准”里可以正确运行

var delta=0.15
var collection;
function floaters() {
this.items = [];
this.addItem = function(id,x,y,content)
{
document.write('
<p style="z-index: 10; width: 100px; position: absolute; height: 450px" id="+id+">'+content+'</p>
 
');var newItem = {};
newItem.object = document.getElementById(id);
newItem.x = x;
newItem.y = y;
 
this.items[this.items.length] = newItem;
}
this.play = function()
{
collection = this.items
setInterval('play()',10);
}
}
function play()
{
 
for(var i=0;i<collection.length;i++)
</collection.length;i++)
{
var followObj = collection[i].object;
var followObj_x = (typeof(collection[i].x)=='string'?eval(collection[i].x):collection[i].x);
var followObj_y = (typeof(collection[i].y)=='string'?eval(collection[i].y):collection[i].y);
 
if(followObj.offsetLeft!=(document.body.scrollLeft+followObj_x)) {
var dx=(document.body.scrollLeft+followObj_x-followObj.offsetLeft)*delta;
dx=(dx&gt;0?1:-1)*Math.ceil(Math.abs(dx));
followObj.style.left=followObj.offsetLeft+dx;
}
 
if(followObj.offsetTop!=(<span style="color: green">document.documentElement.scrollTop</span>+followObj_y)) {
var dy=(<span style="color: green">document.documentElement.scrollTop</span>+followObj_y-followObj.offsetTop)*delta;
dy=(dy&gt;0?1:-1)*Math.ceil(Math.abs(dy));
followObj.style.top=followObj.offsetTop+dy;
}
followObj.style.display = '';
}
}
 
var theFloaters = new floaters();
theFloaters.addItem('followDiv1','document.body.clientWidth-108',1,'<a target="_blank" href="http://sms.tom.com/pkly/pkly.html"></a><img border="0" width="100" src="http://smsad.tom.com/smsweb/images/2005_new/cn/qp_100x400.gif" height="400" />');
 
theFloaters.play();

,

Comments are closed.