JavaScript脚本在Firefox中不起作用

Cod*_*x73 -1 javascript firefox dom javascript-events

我有一个旧函数,它缺少Mozilla/Firefox的行,因此JavaScript无法正常工作.该功能跟踪鼠标坐标,以便我可以定位窗口.

如何让代码在Firefox中运行?

Xoffset = -60; // modify these values to ...
Yoffset = 20; // change the popup position.
var old, skn, iex = (document.all),
    yyy = -1000;

var ns4 = document.layers
var ns6 = document.getElementById && !document.all
var ie4 = document.all

if (ns4) skn = document.dek
else if (ns6) skn = document.getElementById("dek").style
else if (ie4) skn = document.all.dek.style
if (ns4) document.captureEvents(Event.MOUSEMOVE);
else {
  skn.visibility = "visible"
  skn.display = "none"
}
document.onmousemove = get_mouse;


function popup(msg, bak) {
  var content = 
      "<TABLE  WIDTH=150 BORDER=1 BORDERCOLOR=black CELLPADDING=2" +
      "CELLSPACING=0 " + "BGCOLOR=" + bak + "><TD ALIGN=center>" + 
      "<FONT COLOR=black SIZE=2>" + msg + "</FONT></TD></TABLE>";
  yyy = Yoffset;
  if (ns4) {
    skn.document.write(content);
    skn.document.close();
    skn.visibility = "visible"
  }
  if (ns6) {
    document.getElementById("dek").innerHTML = content;
    skn.display = ''
  }
  if (ie4) {
    document.all("dek").innerHTML = content;
    skn.display = ''
  }
}

function get_mouse(e) {
  var x = (ns4 || ns6) ? event.pageX : event.x + document.body.scrollLeft;
  skn.left = x + Xoffset;
  var y = (ns4 || ns6) ? event.pageY : event.y + document.body.scrollTop;
  if (document.documentElement &&  // IE6 +4.01 but no scrolling going on
     !document.documentElement.scrollTop) {
    y = event.y + document.documentElement.scrollTop;
  }
  else if (document.documentElement && // IE6 +4.01 and user has scrolled
           document.documentElement.scrollTop) { 
    y = event.y + document.documentElement.scrollTop;
  }
  else if (document.body && document.body.scrollTop) { // IE5 or DTD 3.2
    y = event.y + document.document.body.scrollTop;
  }

  skn.top = y + yyy;
}

function kill() {
  yyy = -1000;
  if (ns4) {
    skn.visibility = "hidden";
  }
  else if (ns6 || ie4) skn.display = "none"
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

"事件未定义"

在IE中正常工作.

gbl*_*zex 7

我不会发布关于如何重写代码的代码@Ivo Wetzel几乎是你需要的,但是让meg给你一些建议.

  1. 世界正在快速变化,计算机行业也在快速变化.虽然有时它没有我们想要的那么快(IE 6缓慢消失),但是没有必要支持Netscape 4.

  2. 请咨询StatCounter等网站,了解正在使用的浏览器(在您所在的国家/地区).另请参阅YUI分级浏览器支持.雅虎是互联网上最大的玩家之一,他们的网站几乎适合所有人,因此他们知道他们在谈论什么.

  3. 找一个好的DOM参考.MDC几乎是你所需要的,但是对于IE怪癖来说MSDN很好.谈论怪癖,不要忘记给QuirksMode兼容性表添加书签.

  4. 永远不要使用类似的功能ie4 = document.all,因为单个功能无法识别整个浏览器.这就像是说:"嘿,你有金发,你必须是布拉德皮特".使用特征检测.阅读以下两篇优秀文章:浏览器检测(以及要做什么)功能检测:最先进的浏览器脚本

  5. 不要使用,document.write因为它是可怕的同步I/O. 它会阻止您的页面呈现并导致糟糕的用户体验.Web就是异步.

"同步编程是不尊重的,不应该用在人们使用的应用程序中." - 道格拉斯·克罗克福德