前几天,让团队的小蔡找了个漂浮广告JS代码。在本地测试都是正常的(我们简单的加上代码,做了一个很长很长的DIV)。我把该代码封装到js文件中,传到网站上。可是,效果和本地不一样,一直往下飘~~~~~ 我们换了很多代码,都是一样的。最后,我烦了:就那样吧。
可是客户不依啊,非要改,早上抽时间找找问题。我把静态页面保存在本地测试,发现还是有问题。我想起,网站用的是CSS+DIV的方式。于是换掉文件头,问题消失了!再查,发现是网站头部的W3C声明导致代码失效:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
这串代码是不能删除的,否则CSS样式会出问题。
网站是用xhtml+css排版的,该声明必须放置。在网络上搜索了一圈,有人给出了解决方法。
“声明直接导致document.body.scrollTop永远等于0,body Scroll永远也不会引发。解决方法:把document.body用document.documentElement替换掉”我打开漂浮源代码,调试成功。一下是网站使用的符合W3C声明的漂浮广告代码,也共享出来和大家分享!
/*代码开始*/
document.write ("<DIV id=img1 style='Z-INDEX: 100; LEFT: 2px; WIDTH: 59px; POSITION: absolute; TOP: 43px; HEIGHT: 61px; ")
document.write (" visibility: visible;'> ")
document.write (" <a href='newst_help.asp' target='_blank'> ")
document.write (" <img src='images/ad/02.gif' ")
document.write (" </a></DIV> ")
var xPos = 300;
var yPos = 200;
var step = 1;
var delay = 80;
var height = 0;
var Hoffset = 0;
var Woffset = 0;
var yon = 0;
var xon = 0;
var pause = true;
var interval;
img1.style.top = yPos;
function changePos()
{
width = document.documentElement.clientWidth;
height = document.documentElement.clientHeight;
Hoffset = img1.offsetHeight;
Woffset = img1.offsetWidth;
img1.style.left = xPos + document.documentElement.scrollLeft;
img1.style.top = yPos + document.documentElement.scrollTop;
if (yon)
{yPos = yPos + step;}
else
{yPos = yPos - step;}
if (yPos < 0)
{yon = 1;yPos = 0;}
if (yPos >= (height - Hoffset))
{yon = 0;yPos = (height - Hoffset);}
if (xon)
{xPos = xPos + step;}
else
{xPos = xPos - step;}
if (xPos < 0)
{xon = 1;xPos = 0;}
if (xPos >= (width - Woffset))
{xon = 0;xPos = (width - Woffset); }
}
function start()
{
img1.visibility = "visible";
interval = setInterval('changePos()', delay);
}
function pause_resume()
{
if(pause)
{
clearInterval(interval);
pause = false;}
else
{
interval = setInterval('changePos()',delay);
pause = true;
}
}
start();
/*代码结束*/
使用方法:
新建一个文本文件,把以上代码拷贝,并保存为js文件。比如 ad_pp.js
在网页中,添加一个js文件导入,如下:
<script src="ad_pp.js" type="text/javascript"></script>
我习惯加到网站代码末尾。