【发布时间】:2012-04-27 14:26:33
【问题描述】:
我们公司的网站有一个 JavaScript 问题,我正在拼命尝试解决,但真的很挣扎。我的 JS 技能足以用 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
- 这只是最近才开始发生 - 在没有改变之后!
- 错误似乎是随机发生的
- 通常(但有时),my 脚本不会引发错误 - 例如script.js - 通常它们是从缩小的库中抛出的。每次都不一样。
- 这似乎在所有浏览器中都会发生,但在 Chrome 中比在 Firefox 中更常见
任何想法从哪里开始?不幸的是,这是一个内部公司网站,因此提供访问权限很棘手,因为我们处理整个网站的敏感数据。
感谢您的帮助!
【问题讨论】:
-
“我需要帮助,但我不会显示代码”。那我们该如何帮助呢?清除缓存,打开开发工具 -> 网络。然后,打开您的页面,并验证是否已加载所有文件。如果文件加载正确,请检查文件是否以正确的顺序加载和执行。
-
您可以忽略来自 Sizzle 的
b.call行上的错误,这是一条红鲱鱼。它正在测试 应该 失败的东西是否真的失败了,它在 Chrome 上会失败(而不是在 Firefox 上,因此是测试)。 -
@RobW 我意识到这听起来像,我很抱歉 - 我会尝试编辑问题并添加更多代码。
-
@RobW 感谢您的编辑。我听从了你的建议——所有文件都以正确的顺序加载——首先是文档,然后是样式表,然后是 JS——从 jQuery 开始,然后是我们的插件,然后是我们的自定义脚本文件。在这方面一切似乎都是正确的......只是从 jquery.min.js 中得到错误
Uncaught TypeError: Cannot call method 'apply' of undefined...... - 我还更新了我的问题以进一步解释这一点。 -
@JackWebb-Heller 消除可能的原因:创建一个新的 Chrome/Firefox 配置文件。固定的?不? 2) 禁用您网站上的所有模块。继续添加模块,直到您再次看到错误为止。
标签: javascript jquery debugging google-chrome google-chrome-devtools