1

我们公司的网站有一个JavaScript问题,我拼命试图解决,但真的很挣扎。我的JS技能足以构建一个像jQuery这样的网站,但我并不擅长调试 - 所以非常感谢任何帮助。试图调试JavaScript和jQuery - 去哪里...?

看起来随机地,页面上的所有JS组件(例如jQuery Datepicker)停止工作。当强制重新加载打开错误控制台的页面时,这些错误大约发生在60%的时间 - 这似乎没有任何模式。一旦发生这种情况,修复网站的唯一方法就是清除缓存并重新加载。

控制台输出以下:

Uncaught TypeError: Object #<Object> has no method 'each' 
Uncaught TypeError: Object #<Object> has no method 'not' 
Uncaught TypeError: Object #<Object> has no method 'each' 

然而:这只是一个例子。其他时候我会得到完全不同的错误。例如。几分钟后提交这个问题后,我再次尝试,并得到了这一点:

Uncaught TypeError: Cannot call method 'apply' of undefined 

再次从jquery.min.js抛出 - 漂亮的印刷,线1453(第三行向下):

if (g.call(k) === "[object Array]") 
    if (!u) 
     e.push.apply(e, k); 

我将Chrome设置为打破所有未处理的异常,这是它捕获的另一个异常 - 在缩小的jQuery库的第3行。下面显示的是漂亮的版本:

try { 
    b.call(c.documentElement, "[test!='']:sizzle") 
    } catch (f) { 
     e = !0 
    } 

实际的错误行开始b.call[...]。这适用于jquery.min.js的1904行。

  • 我使用了最新的jQuery
  • 这个最近才开始发生的事情 - 变着法子了!
  • 的错误发生看似随机
  • 通常(但有时),没有错误从脚本抛出 - 例如script.js - 通常它们是从缩小的库中抛出的。它每次都有所不同。
  • 这似乎在所有浏览器的情况发生,但更多的时候在Chrome比Firefox

任何想法从哪里开始?不幸的是,这是一个内部公司网站,因此我们处理整个网站的敏感数据,因此提供访问非常棘手。

谢谢你的帮助!

+1

“我想帮助,但我不打算展示码”。那我们怎么帮忙呢?清除缓存,打开开发工具 - >网络。然后,打开您的页面,并验证是否加载了所有文件。如果文件加载正确,请检查文件是否以正确的顺序加载和执行。 – 2012-04-16 08:48:58

+0

你可以忽略来自'b.call'行的Sizzle的那个错误,那是一条红鲱鱼。它正在测试*应该*失败的事情是否确实会失败,它在Chrome上执行(而不是在Firefox上,因此是测试)。 – 2012-04-16 08:49:16

+0

@RobW我意识到这听起来像,我的道歉 - 我会尝试编辑问题,并添加更多的代码。 – Jack 2012-04-16 08:50:03

回答

0

在我看来,你的网页是相当大的,浏览器会尝试DOM完全加载之前执行的js代码......可能是因为您在使用在线的JavaScript代码..

这可以解释随机错误以及强制重新载入时出现错误的事实。

我建议你把你的JS code inside a dom ready event所以JS代码可以毫无问题地执行..

希望这有助于:)

+1

错误消息与此类错误不匹配。错误消息表明jQuery无法正确加载。 – 2012-04-16 08:56:42

+0

感谢您的回答 - 仅查看了源代码,我们没有内联代码。所有内容都按照正确的顺序在'