解决JS在W3C网页中无法触发某些事件的方法

写了段随动对联广告代码加入网页中,谁知测试时广告图片竟然不随动!

我的页面是用DIV+CSS写的,开头是标准的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

把此段换成 <html>,测试正常。标准没有错,那非要遵循标准而又要实现JS的广告效果怎么办?

此广告代码如下:

function initEcAd() {
document.all.AdLayer1.style.posTop = -200;
document.all.AdLayer1.style.visibility = 'visible'
document.all.AdLayer2.style.posTop = -200;
document.all.AdLayer2.style.visibility = 'visible'
MoveLeftLayer('AdLayer1');
MoveRightLayer('AdLayer2');
}
function MoveLeftLayer(layerName) {
var x = 5;
var y = 50;// 左侧广告距离页首高度
var diff = (document.body.scrollTop + y - document.all.AdLayer1.style.posTop)*.40;
var y = document.body.scrollTop + y - diff;
eval("document.all." + layerName + ".style.posTop = parseInt(y)");
eval("document.all." + layerName + ".style.posLeft = x");
setTimeout("MoveLeftLayer('AdLayer1');", 20);
}
function MoveRightLayer(layerName) {
var x = 5;
var y = 50;// 右侧广告距离页首高度
var diff = (document.body.scrollTop + y - document.all.AdLayer2.style.posTop)*.40;
var y = document.body.scrollTop + y - diff;
eval("document.all." + layerName + ".style.posTop = y");
eval("document.all." + layerName + ".style.posRight = x");
setTimeout("MoveRightLayer('AdLayer2');", 20);
}

document.write("<div id=AdLayer1 style='position: absolute;visibility:hidden;z-index:1'><a href='http://www.cc9000.com/sps.pdf' target='_blank'><img src=Ads/images/ad_01.jpg border='0'></a></div>"
+"<div id=AdLayer2 style='position: absolute;visibility:hidden;z-index:1'><a href='http://www.cc9000.com/sps.pdf' target='_blank'><img src=Ads/images/ad_01.jpg border='0'></a></div>");
initEcAd()

在网页使用标准声明时,导致 document.body.scrollTop 永远等于0, body Scroll永远也不会触发。

解决方案:

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

搞定。

Trackbacks: 点击获得Trackback地址,Encode: UTF-8  点击获得Trackback地址,Encode: GB2312 or GBK  点击获得Trackback地址,Encode: BIG5
分类:CSS & JS
浏览概况:评论:0 | 阅读:6582
文章评论(0)
发表评论
用户名:
密码(游客无需):
网址/E-mail:
      记住我的信息