1

我们公司的网站有一个 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
  • 这只是最近才开始发生 - 在没有改变之后!
  • 错误看似随机发生
  • 通常(但有时),我的脚本不会抛出任何错误 - 例如 script.js - 通常它们是从缩小的库中抛出的。每次都不同。
  • 这似乎发生在所有浏览器中,但在 Chrome 中比在 Firefox 中更常见

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

感谢您的帮助!

4

1 回答 1

0

在我看来,您的页面很大,并且浏览器尝试在 DOM 完全加载之前执行 js 代码……可能是因为您使用的是内联 javascript 代码。

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

我建议您将 JS代码放在 dom 就绪事件中,以便可以毫无问题地执行 js 代码。

希望这可以帮助 :)

于 2012-04-16T08:55:48.373 回答