38

我意识到这不是在可搜索性方面询问这个问题的理想场所,但是当我在 Internet Explorer 中查看它时,我有一个页面的 JavaScript 代码会引发“第 0 行中的堆栈溢出”错误。

很明显,问题不在第 0 行,而是在我正在写入文档的内容列表中的某个位置。在 Firefox 中一切正常,所以我没有 Firebug 和朋友的乐趣来协助故障排除。

这有什么标准原因吗?我猜这可能是 Internet Explorer 7 的错误或相当模糊的东西,而我的Google-fu目前给我带来的乐趣很少。我可以找到很多以前遇到过这个问题的人,但我似乎无法找到他们是如何解决的。

4

13 回答 13

32

我最近遇到了这个问题,并写了一篇关于我们代码中导致这个问题的特殊情况的帖子。

http://cappuccino.org/discuss/2010/03/01/internet-explorer-global-variables-and-stack-overflows/

快速总结是:通过宿主全局对象的递归限制为 13 的堆栈深度。换句话说,如果您的函数调用使用的引用(不一定是函数本身)是用某种形式定义的 window.foo =函数,然后通过 foo 递归被限制在 13 的深度。

于 2010-03-02T18:02:46.300 回答
20

啊哈!

OnError()如果找不到,我在某些代码中有一个事件,它将图像源设置为默认图像路径。当然,如果没有找到默认的图像路径,它会触发错误处理程序......

对于有类似问题但不一样的人,我猜这很可能是一个未终止的循环,一个触发自身的事件处理程序或类似的东西,使 JavaScript 引擎陷入困境。

于 2008-10-22T15:56:56.237 回答
17

您可以关闭Internet"Disable Script Debugging" Explorer中的选项并开始调试,Visual Studio如果您碰巧有它的话。

我发现这是诊断其中一些IE特定问题的少数方法之一。

于 2008-10-22T14:57:46.480 回答
7

我遇到了这个问题,我解决了。<%@ Page标签中有一个名为的属性,MaintainScrollPositionOnPostback删除它后,错误消失了。我之前添加了它以防止每次回发后滚动。

于 2009-12-01T12:56:32.247 回答
3

如果你来这里是因为你在硒测试中遇到了问题:IE 不喜欢By.id("xyz"). 使用 By.name、xpath 或其他替代方式。

于 2012-03-02T15:40:26.280 回答
2

也有 smartNavigation="true" 导致这个“

于 2010-05-13T17:33:22.353 回答
2

我设置了一个默认项目,发现以下内容:

问题是 smartNavigation 和 maintainScrollPositionOnPostBack 的组合。仅当两者都设置为 true 时才会发生错误。

就我而言,错误是由以下原因产生的:

<pages smartNavigation="true" maintainScrollPositionOnPostBack="true" />

任何其他组合都可以正常工作。

有人可以证实这一点吗?

于 2012-02-04T19:17:19.033 回答
1

  1. 互联网选项
  2. 工具
  3. 互联网选项
  4. 先进的
  5. 导航部分
  6. 单击 > 禁用脚本调试

    显示有关每个脚本错误的通知

  7. 登入
  8. 你会微笑!

于 2010-12-10T18:12:03.390 回答
1

我的是“在第 1 行”,但是...

我在使用 jQuery 的.clone方法时遇到了这个问题。我通过使用从 html 字符串制作 jQuery 对象来替换这些:$($(selector).html()).

于 2013-01-22T00:39:57.153 回答
1

我在 IE8 上重现了同样的错误。其中一个文本框有一些事件处理程序来替换无效数据。

$('.numbersonly').on("keyup input propertychange", function () {
    //code
});

向此文本框输入数据时显示错误消息。我们从上面的代码中删除了事件“propertychange”,现在它可以正常工作了。

PS也许它会帮助某人

于 2013-10-25T10:01:40.010 回答
0

我不知道该告诉你什么,但是 jQuery 表排序和搜索也出现了同样的问题。当表中没有任何内容时,例如您正在搜索字符串时,您也会收到此错误。即使在 Google Analytics 中,这个错误也经常发生。

于 2010-01-27T06:04:03.633 回答
0

就我而言,我有两个函数a()b(). 第一个是调用第二个,第二个是调用第一个:

var i = 0;
function a() { b(); }
function b() {
  i++; 
  if (i < 30) {
    a();
  }
}

a();

我使用以下方法解决了这个问题setTimeout

var i = 0;
function a() { b(); }
function b() {
  i++; 
  if (i < 30) {
    setTimeout( function() {
      a();
    }, 0);
  }
}

a();
于 2012-12-20T19:48:46.323 回答
-16

这是 Java 和 Flash Player 的问题。安装最新的Java和Flash Player,问题就解决了。如果没有,请安装 Mozilla Firefox,它会自动安装所需的更新。

于 2010-08-10T14:09:39.257 回答