"SCRIPT28:堆外空间“;在使用IE9的网站上

"SCRIPT28: Out of stack space" on website using IE9

本文关键字:IE9 网站 空间 SCRIPT28 quot      更新时间:2023-09-26

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

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

  2. Chrome中不存在此问题,或者FireFox中只存在于IE9中。当您将IE9置于兼容模式时,它不存在。

  3. 如果我使用IE9Developer工具栏并查看脚本,只要你点击其中一个链接按钮,控制台就会显示以下错误:

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

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

有什么想法吗?谢谢你的建议。

正如人们在评论中所说:这意味着发生了无限递归。无论是简单的递归,还是像蛇咬尾巴一样在代码中迂回前进——未知,IE似乎都没有堆栈竞争,或者确实如此?

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

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);

我希望这个答案对你有帮助。

您可以发布代码/a到代码的链接,还是关闭此问题?

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

查看msdn页面了解有关此错误的信息。在我的情况下,错误是由以下原因引起的:

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

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