我遇到的问题是,一旦我们将网站部署到生产服务器,我页面上的所有链接按钮控件都无法运行。以下是一些细节:
我们开发了3个环境:我们的本地机器,它使用本地IIS7进行开发;测试环境,它是我们防火墙后面的实际网络服务器(IIS6);生产是我们的实时网络服务器(IIS6)。该网站在本地计算机和测试服务器上运行良好,但一旦我们点击生产服务器上的链接按钮就会挂起。
Chrome或FireFox中不存在此问题,它仅存在于IE9中。将IE9置于兼容模式时,它不存在。
如果我使用IE9 Developer工具栏并观看脚本,只要单击其中一个链接按钮,控制台就会显示以下错误:
SCRIPT28:堆栈空间不足 ,第340行第9期
有什么想法? 感谢您的任何建议。
答案 0 :(得分:7)
正如人们在评论中所说:这意味着无限递归发生。无论是简单的递归还是跨越代码的一些狡猾的路径,比如蛇咬它的尾巴 - 未知,似乎IE没有给出堆栈跟踪,或者它没有?
答案 1 :(得分:1)
您可以发布代码/链接到代码,还是关闭此问题?
常见问题:你可能在html中有一个闭包问题,因此不同的浏览器会以不同的方式解释html层次结构,或者你可能会循环遍历for(x in y),其中x包含对y的反向引用。
答案 2 :(得分:1)
有关此错误的信息,请查看msdn page。在我的情况下,错误是由:
引起的您的代码触发了事件级联 事件级联是由触发调用已在堆栈上的事件过程的事件引起的。 ...
基本上,我试图使用控件的单击事件在文件上传控件上触发单击事件(使用jQuery)。好像它会导致无限递归。也许你的按钮可能遇到类似的问题。
答案 3 :(得分:1)
我在执行以下代码时已经重现了这个问题:
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);
我希望这个答案对你有所帮助。