【问题标题】:"SCRIPT28: Out of stack space" on website using IE9使用 IE9 的网站上的“SCRIPT28:堆栈空间不足”
【发布时间】:2011-06-08 14:33:18
【问题描述】:

我遇到的问题是,一旦我们将网站部署到生产服务器,我的页面上的所有链接按钮控件都不起作用。以下是一些细节:

  1. 我们有 3 个开发环境: 我们的本地机器,它使用本地 IIS7 来运行开发;测试环境,它是我们防火墙后面的实际网络服务器(IIS6);生产是我们的实时网络服务器(IIS6)。该网站在本地机器和测试服务器上运行良好,但是一旦我们单击生产服务器上的链接按钮,它就会挂起。

  2. Chrome不存在该问题,或者FireFox只存在于IE9。将IE9置于兼容模式时不存在。

  3. 如果我使用 IE9 Developer 工具栏并观看脚本,只要单击其中一个链接按钮,控制台就会显示此错误:

SCRIPT28:堆栈空间不足 ,第 340 行字符 9

  1. 我使用了相当多的 JQuery,我想知道这是否会导致问题:但是,我没有看到任何 javascript 错误。

有什么想法吗? 感谢您的任何建议。

【问题讨论】:

  • 如果您遇到堆栈溢出(呵呵),我的建议是检查代码中的递归函数调用。特别是,检查第 340 行,脚本 #28 中的字符 9,无论是什么脚本。
  • 感谢您的回复。我在想 SCRIPT28: 是 IE 的错误代码。在代码下方,它给出了页面的名称,然后是第 340 行字符 9。这是该行的内容:
    对我来说没有意义。
  • 哦,刚刚注意到你的问题中关于 IE9 和兼容模式的那一行。兼容模式究竟意味着什么?了解这一点可能会帮助您弄清楚为什么您只在 IE9 上遇到问题,并且只在一台机器上。

标签: javascript asp.net internet-explorer response.redirect


【解决方案1】:

正如人们在 cmets 中所说:这意味着发生了无限递归。无论是简单的递归还是像蛇咬尾巴一样跨越代码的一些迂回路径 - 未知,IE 似乎没有给出堆栈跟踪,或者确实?

【讨论】:

  • 不知道ie是否有完整的stacktrace,但是你可以手动查看谁调用了你的函数。 arguments.callee.caller.name.toString()
  • 顺便说一句,经过这么多年,我认为 - 如果他们只是将此错误称为“堆栈溢出”,那么没有人会提出任何愚蠢的问题!
【解决方案2】:

我在执行以下代码时重现了这个问题:

HTML

<span class="search-icon"><input title="search" type="submit" value=""></span>

JS

(function($) {
    $('.search-icon').on('click', function(e) {
        // The click event will call  $('.search-icon').on('click', function(e) { .. } for every time
        // which make an infinte loop in click event as long as there are no stop condition added here.
        $(this).find('input').click();
    });
})(jQuery);

我已经通过将我的 JS 代码更改为:

(function($) {
        $('.search-icon').on('click', function(e) {
            $(this).closest('form').submit();
        });
})(jQuery);

希望这个回答对你有帮助。

【讨论】:

    【解决方案3】:

    您可以发布代码/代码链接,或关闭此问题吗?

    常见问题:您可能在 html 中遇到了闭包问题,因此不同的浏览器对 html 层次结构的解释不同,或者您可能正在循环通过 for(x in y) 其中 x 包含对 y 的反向引用。

    【讨论】:

      【解决方案4】:

      查看msdn page 以获取有关此错误的信息。就我而言,错误是由以下原因引起的:

      您的代码触发了事件级联。
      事件级联是由触发一个调用已经在堆栈上的事件过程的事件引起的。 ...

      基本上,我试图在文件上传控件上触发单击事件(使用 jQuery)使用控件的单击事件。似乎它会导致无限递归。也许您的按钮也有类似的问题。

      【讨论】:

      • 你是怎么解决这个问题的?
      猜你喜欢
      相关资源
      最近更新 更多
      热门标签