Javascript:document.images[]完成在IE中不工作

Javascript:document.images[]完成在IE中不工作,javascript,internet-explorer-9,slideshow,xhtml-transitional,Javascript,Internet Explorer 9,Slideshow,Xhtml Transitional,我有一个很长时间都在播放的幻灯片。我正在将网站更新为XHTML过渡版,现在幻灯片放映在IE9中不起作用 问题似乎是“完整”功能不起作用。以下代码启动幻灯片放映(在页面加载后调用): document.images[“carImg”].complete始终解析为false,因此它每秒调用Initialize。图像imgList[0]已加载,因为它正在显示。但未设置完整属性 如果我将If(document.images[“carImg”].complete)条件注释掉,然后只需调用SetTheInt

我有一个很长时间都在播放的幻灯片。我正在将网站更新为XHTML过渡版,现在幻灯片放映在IE9中不起作用

问题似乎是“完整”功能不起作用。以下代码启动幻灯片放映(在页面加载后调用):

document.images[“carImg”].complete始终解析为false,因此它每秒调用Initialize。图像
imgList[0]
已加载,因为它正在显示。但未设置完整属性

如果我将
If(document.images[“carImg”].complete)
条件注释掉,然后只需调用
SetTheInterval()
,幻灯片放映就可以了

它也适用于Firefox(带有条件)。如果我将IE9设置为“兼容性视图”,它也可以工作(尽管其他事情看起来很奇怪)

有人知道为什么IE 9中没有设置“完整”属性吗?有什么变化吗


更新:它似乎只完成了而没有处理第一张图像。对于后续图像,在加载图像时设置“完成”

尝试查看是否有加载或错误事件,这可能是因为即使重置src也会生成一个“脏”映像,即使映像存在,该映像也不会立即完成

我以前没有注意到这一点,但是在IE10(没有9)中,您需要onload事件。 当onload触发时,complete为true,但一旦您写入img src,它就再次为false。您还可以只设置一次src,并在超时时检查complete

如果没有onload处理程序,即使在图像出现之后,计时器也会一直持续

window.ready=function(){
    var img= document.images[0];
    img.onload= function(){
        clearTimeout(ready.timer);
        alert('onload called, img.complete= '+img.complete);              
    };
        // temporary error handler, if needed
        img.onerror=function(e){              
               clearTimeout(ready.timer);
               alert('Error!\n'+e.message || e);
        };
       // set the new src
    img.src= Memry.Rte+'art/sundrag.gif';
    if(!img.complete) ready.timer=setTimeout(window.ready, 300);
    else alert('complete');
}
ready()

尝试查看是否有onload或错误事件,这可能是因为即使重置src,也会生成一个“脏”映像,即使映像存在,也不会立即完成

我以前没有注意到这一点,但是在IE10(没有9)中,您需要onload事件。 当onload触发时,complete为true,但一旦您写入img src,它就再次为false。您还可以只设置一次src,并在超时时检查complete

如果没有onload处理程序,即使在图像出现之后,计时器也会一直持续

window.ready=function(){
    var img= document.images[0];
    img.onload= function(){
        clearTimeout(ready.timer);
        alert('onload called, img.complete= '+img.complete);              
    };
        // temporary error handler, if needed
        img.onerror=function(e){              
               clearTimeout(ready.timer);
               alert('Error!\n'+e.message || e);
        };
       // set the new src
    img.src= Memry.Rte+'art/sundrag.gif';
    if(!img.complete) ready.timer=setTimeout(window.ready, 300);
    else alert('complete');
}
ready()

我不确定这是不是最好的答案,但时间是一种浪费,而且是有效的

问题是,我已将图像标记的初始
src
设置为
spacer.gif
(HTML格式)。因此,当执行初始化例程时,图像的
complete
属性为
true

但是,当我将javascript中的
src
属性重置为图像列表中的第一个图像时,
complete
属性变为
false
。我不知道为什么。随后,将
src
属性更改为图像列表中的另一个图像确实将
complete
属性设置为
true

IE9和Chrome都是这样,但Firefox却不是这样。如图所示。因此,我没有将图像的
src
设置为
spacer.gif
,而是读取包含代码隐藏(C#)中图像名称列表的javascript文件,并将图像标记的初始
src
属性设置为第一个图像。现在它起作用了

FWIW,我确实尝试在图像标签中使用onerror,但没有出现错误


嘘。我不喜欢javascript。

我不确定这是不是最好的答案,但时间是浪费的,而且很有效

问题是,我已将图像标记的初始
src
设置为
spacer.gif
(HTML格式)。因此,当执行初始化例程时,图像的
complete
属性为
true

但是,当我将javascript中的
src
属性重置为图像列表中的第一个图像时,
complete
属性变为
false
。我不知道为什么。随后,将
src
属性更改为图像列表中的另一个图像确实将
complete
属性设置为
true

IE9和Chrome都是这样,但Firefox却不是这样。如图所示。因此,我没有将图像的
src
设置为
spacer.gif
,而是读取包含代码隐藏(C#)中图像名称列表的javascript文件,并将图像标记的初始
src
属性设置为第一个图像。现在它起作用了

FWIW,我确实尝试在图像标签中使用onerror,但没有出现错误


嘘。我不喜欢javascript。

您尝试过使用回调吗?我认为你的方法不对<代码>document.images[“carImg”].oncomplete=SetTheInterval好吧,它已经运行多年了,在Firefox中也能运行。谷歌搜索document.images[].complete会显示许多结果。另外,我并不总是想在加载图像时调用SetTheInterval——只是这次。您尝试过使用回调吗?我认为你的方法不对<代码>document.images[“carImg”].oncomplete=SetTheInterval好吧,它已经运行多年了,在Firefox中也能运行。谷歌搜索document.images[].complete会显示许多结果。另外,我并不总是想在加载图像时调用SetTheInterval——只是这次。