JS代码不兼容火狐,这个JS主要是漂浮在网页中的一个广告图?请高手帮帮忙怎么办?下面是JS代码。谢谢。

2025-06-22 08:01:47
推荐回答(2个)
回答1:

var xPos = 300;
var yPos = 200;
var step = 1;
var delay = 30
var height = 0;
var Hoffset = 0;
var Woffset = 0;
var yon = 0;
var xon = 0;
var pause = true;
var img1 = document.getElementById("img1");
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) + "px";
img1.style.top = (yPos + document.documentElement.scrollTop) + "px";
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.style.visibility = "visible";
interval = setInterval(changePos, delay);
}
function pause_resume(){
if(pause){
clearInterval(interval);
pause = false;
}else{
interval = setInterval(changePos,delay);
pause = true;
}
}
start();
=======================
注意你的网页内的对应广告所在的DIV层,要设置


=======================

帮你修改好了,其实你这段JS代码要兼容FF的话,也很简单,注意以下几点:

1、FF要求任何一个网页内的对象,必须要有声明,所以img1.offsetHeight在使用前,必须先声明,所以要有var img1 = documment.getElementById("img1");声明img1变量是DIV层ID为img1的对象

2、XHTML1.0网页标准后,基本JS代码,在FF和Chrome下,都不支持document.body了,所以要全部改为document.documentElement

3、在设置网页对象的偏移量属性的时候(包括高宽属性),必须要添加px单位值,所以img1.style.left = xPos + document.documentElement.scrollLeft 这句的末尾要添加"px";

以上三点不严格的代码,之所以在IE中会被执行,是因为IE本身没有太严格,很多时候,微软也算是太过纵容开发者了,他们在IE内部会自动将JS不完善的代码,解读成完善的。

所以IE有时候甚至还容许HTML代码没有闭合标签,呵呵,这是题外话了。

回答2:

  您好!很高兴为您答疑!

网页内的对应广告所在的DIV层,要设置

,任何一个网页内的对象,必须要有声明,所以img1.offsetHeight在使用前,必须先声明。
  XHTML1.0网页标准后,基本JS代码,在FF和Chrome下,都不支持document.body了,所以要全部改为document.documentElement。
  您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。