2010-04-13 48 views
1

我正在开发一个JavaScript和jQuery的网站。有时当我刷新时,我只是在萤火虫中得到不同的随机错误。这是怎么回事?什么是随机Javascript错误?

编辑:我发现了错误,如一个变量没有定义,当清楚它和工作,而当我再次刷新,错误消失..

使用Firefox浏览器V3.5.5萤火虫V. 1.5.3和我主要使用jQuery 1.4.2

+1

你能否提供一些上下文,比如示例代码和示例错误....否则,任何人都无法提供帮助。 – Kinlan 2010-04-13 16:50:44

+0

你有什么错误,在哪里? – animuson 2010-04-13 16:50:53

+1

*需要更多信息!喜欢;网页试图做什么?什么js正在运行?什么是错误?你运行的是哪个版本的firebug/jquery/firefox? – Mathew 2010-04-13 16:51:48

回答

3

确定。虽然它或多或少不能给出一个合理的解决方案,这样一个一般性的问题,我就加我的2美分的价值:

一个‘未定义的变量’错误的可能来源是包括一些脚本,可能会也可能不会总是以相同的顺序加载和执行。如果你在一个脚本中定义了一个变量(我们称之为脚本declare.js)并在另一个脚本中使用它(比如说use.js),并且use.jsdeclare.js之前执行,那么你会得到这样的错误。如果脚本以其他方式执行,则一切都会显示正常。

如果你对这个话题感兴趣,可以看看例如Steve Souders的书Even faster web sites,由O'Reilly出版。更具体地说,查看关于非阻塞脚本加载的章节。

+0

非常有趣,感谢您的输入。 – 2010-04-13 17:11:17

1

最常见的原因是,您正试图在之前执行Javascript DOM已加载,因此在DOM树中可用的所有HTML元素之前,这又可能导致像document.getElementById(id)和jQuery的$(selector)这样的简单调用可能返回未定义的元素。有时它的作用是纯粹的巧合和时间问题。

您需要确保任何应该在页面加载期间执行的Javascript/jQuery代码,并且依赖于DOM树中元素的可用性,在加载DOM后之后也确实执行了。在普通的香草JS你可以这样做:

window.onload = function() { 
    document.getElementById(someId); 
} 

和jQuery中:

$(document).ready(function() { 
    $(someSelector); 
});