功能在IE7和IE中不能正常工作。从setTimeout调用时的IE8

时间:2011-03-02 11:39:20

标签: javascript jquery

我在IE7和IE8上遇到了这个疯狂的javascript问题。下面的函数表达式加载一些图像。就是这样。非常简单。当直接调用函数时,即testmypatience()它可以正常工作,但如果我从超时内部调用它,它将无法加载图像。调用该函数但不会加载图像。它在jQuery动画回调调用时也无法工作。

我已经尝试过一切,我无法让它发挥作用,所以你会非常感激你的帮助。

var testmypatience = function($active){
                var arr = ['images/site/products-medium/m_cordial_pomegranateelderflower.png', 'images/site/products-medium/m_cordial_spicedberry.png', 'images/site/products-medium/m_cordial_strawberryelderflower.png', 'images/site/products-medium/m_750presse_coxsapple.png', 'images/site/products-medium/m_party_appleandelderflower.png', 'images/site/products-medium/m_squeezy_blackcurrentandapple.png', 'images/site/products-medium/m_270presse_cranberryandorange.png', 'images/site/products-medium/m_270presse_elderflower.png', 'images/site/products-medium/m_270presse_gingerlemongrass.png'];
                for (i = 0; i < arr.length; i++) {
                    var img, len;
                    img = new Image();
                    img.src = arr[i];

                    img.onload = function(){
                        console.log('done ' + this.src);
                    }
                }
            }

//this works
testmypatience()

//None of these work
    setTimeout(function(){
       testmypatience()
    }, 400)

    setTimeout(testmypatience, 400)

    jQuery('elm').animate({left:'1000px'},
    {
       duration:200,
       complete: testmypatience
    });

3 个答案:

答案 0 :(得分:2)

除非您为此安装了浏览器扩展/插件,否则IE7和8没有控制台。使用console.log调用注释行或使用FireBug Lite

之类的内容

另外,正如pimvdb所说,1000px应该在引号中(在所有浏览器中都没有引号,它是无效的javascript语法)。

答案 1 :(得分:2)

您不需要像解决方案那样复杂。只需交换srconload的分配。

<强>错误:

img = new Image();
img.src = arr[i];
img.onload = function(){ ... }

从右:

img = new Image();
img.onload = function(){ ... }
img.src = arr[i];

答案 2 :(得分:0)

我已经对它进行了分类。我必须首先在dom中插入一个空的图像对象,然后给它一个src属性,然后才会触发IE7和8中的onload事件。如果我有点模糊,请随时问任何问题我将回答你的所有问题。

$(function(){
                var testmypatience = function($active){
                    var arr = ['images/site/products-medium/m_cordial_pomegranateelderflower.png', 'images/site/products-medium/m_cordial_spicedberry.png', 'images/site/products-medium/m_cordial_strawberryelderflower.png', 'images/site/products-medium/m_750presse_coxsapple.png', 'images/site/products-medium/m_party_appleandelderflower.png', 'images/site/products-medium/m_squeezy_blackcurrentandapple.png', 'images/site/products-medium/m_270presse_cranberryandorange.png', 'images/site/products-medium/m_270presse_elderflower.png', 'images/site/products-medium/m_270presse_gingerlemongrass.png'];
                    for (i = 0; i < arr.length; i++) {
                        var img, len;
                        img = new Image();
                        $(img).prependTo('body');

                        img.onload = function(){
                            console.log('done ' + this.src);
                        }
                    }

                    $('img').each(function(i, elm){
                        elm.src = arr[i];
                    })
                }

                setTimeout(function(){
                    testmypatience()
                }, 400)
            })