Javascript:document.images[]完成在IE中不工作
我有一个很长时间都在播放的幻灯片。我正在将网站更新为XHTML过渡版,现在幻灯片放映在IE9中不起作用 问题似乎是“完整”功能不起作用。以下代码启动幻灯片放映(在页面加载后调用):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
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——只是这次。