我们公司的网站有一个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
任何想法从哪里开始?不幸的是,这是一个内部公司网站,因此我们处理整个网站的敏感数据,因此提供访问非常棘手。
谢谢你的帮助!
“我想帮助,但我不打算展示码”。那我们怎么帮忙呢?清除缓存,打开开发工具 - >网络。然后,打开您的页面,并验证是否加载了所有文件。如果文件加载正确,请检查文件是否以正确的顺序加载和执行。 – 2012-04-16 08:48:58
你可以忽略来自'b.call'行的Sizzle的那个错误,那是一条红鲱鱼。它正在测试*应该*失败的事情是否确实会失败,它在Chrome上执行(而不是在Firefox上,因此是测试)。 – 2012-04-16 08:49:16
@RobW我意识到这听起来像,我的道歉 - 我会尝试编辑问题,并添加更多的代码。 – Jack 2012-04-16 08:50:03