我在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
});
答案 0 :(得分:2)
除非您为此安装了浏览器扩展/插件,否则IE7和8没有控制台。使用console.log
调用注释行或使用FireBug Lite
另外,正如pimvdb所说,1000px
应该在引号中(在所有浏览器中都没有引号,它是无效的javascript语法)。
答案 1 :(得分:2)
您不需要像解决方案那样复杂。只需交换src
和onload
的分配。
<强>错误:强>
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)
})