4

我有以下代码,它根据我传递给此函数的参数,通过 ajax 从 PHP 脚本中提取图像 URL。结果是现有图像淡出(jQuery),src 属性获取新图像并且图像淡入。这在 Chrome、Firefox 等中就像魅力一样,但是 IE9 抛出错误:

'SCRIPT28:堆栈空间不足'

如果我将 IE9 切换到 IE8 或 IE7 模式,它工作正常,即使错误仍然出现,但在 IE9 中它无法起飞。我哪里错了?

function imager(dt){
    $('.ct_img').fadeOut(400);
        var urip = homeURL + '/qwm/CF_QRGR/' + encodeURIComponent(dt) + '/';
        $.ajax({url:urip, success:function(result){
            
            $.doTimeout(400,function(){
                if(result=='0'){
                $('.ct_img').attr('src',homeURL + '/public/img/site/load_fail_message.jpg').bind('load', function (e) {
                    $('.ct_img').fadeIn(400)
                        });
                } else {
                $('.ct_img').attr('src',homeURL + '/public/img/bank/vault/' + result).bind('load', function (e) {
                    $('.ct_img').fadeIn(400)
                        });
                }
                });
                
        }
        });
    
    
}
4

2 回答 2

1

我怀疑这是一个事件绑定。如果没有 jQuery,事件绑定是否有效?周围会不会有很多 .ct_img 类?因为这将替换他们所有的 src 并且可能会超载它?所以在这里,使用 ID 代替

    var img = document.getElementById( "ct_img");
    img.src = url;
    img.onload = function() {
        $('#ct_img').fadeIn(400);
     };

我不知道 IE 是否有完整的堆栈跟踪,但要查看是否有递归,您可以控制台日志

 arguments.callee.caller.name.toString()

查看调用它的方法。

于 2012-10-08T20:02:05.827 回答
1

甚至 IE10 根本没有完整(无)堆栈跟踪,难以调试......这个错误可能是由其他几个原因引起的:/ 在我的情况下,我尝试将表单解析为单个 JS 对象,但仍然收到此错误SCRIPT28:堆栈空间不足,即使没有事件绑定到输入也没有触发任何事件。

但是我注意到一件事,当 Browser Mode: IE9 Document Mode: IE7 --- 我会收到这个错误(即在 dell.com 上)--- 当手动切换到Document Mode: IE9时,这个错误消失了......

编辑:

成功解决了我的问题:

我正在使用: console.log(JSON.stringify(object));

该对象包含来自选择框的数千个选项...因此即使太多的 console.logging 也可能导致 SCRIPT28:堆栈空间不足(尤其是与 JSON.stringify 一起使用时)

于 2013-01-17T08:58:35.073 回答