2011-09-27 102 views
2

我试图从网址加载图像来检查互联网连接。当没有互联网连接时,它应该显示一个dojo警告对话框。这适用于Firefox,但不适用于IE8。img.onerror似乎不适用于IE8

以下是代码片段:

var img = new Image(); 
img.src = userGuideUrl1_img + '?' + (new Date).getTime(); 
img.onload = function() { 
     window.open(userGuideUrl1); 
} 
img.onerror = function() { 
    dojo.addOnLoad(warningDialogFunc); 
} 

这里warningDialogFunc是道场对象。有什么想法吗? 谢谢

回答

1

难道这个页面在img.onerror处理程序执行的时候已经被载入了,IE不会重新执行dojo.addOnLoad(warningDialogFunc)的函数吗?

尝试改变

img.onerror = function() { 
    dojo.addOnLoad(warningDialogFunc); 
} 

简单:

img.onerror = function() { 
    warningDialogFunc(); 
} 
+0

我试着改变dojo.addOnLoad(...)完全只是提醒('无连接'),这是一个函数调用。这没有任何区别。我相信img.onerror要么不被IE所理解,要么我错过了其他的东西。 – Sunny

+0

找出问题...为了模拟没有互联网连接,我从文件菜单中单击“脱机工作”。在这种情况下,IE的行为与Firefox的行为不同,当我这样做时,它不起作用。因此,我不使用“离线工作”,而是从桌面上拔出以太网电缆,然后尝试使用它;有效。 – Sunny

+0

FWIW,对addOnLoad的调用仍然会触发,即使它们在DOM准备好并且模块已经加载后排队。在那种情况下,他们会立即开火。 –

0

您必须设置处理程序设置图像的源之前,当你改变src属性,IE会试图下载图像并触发事件。

var img = new Image(); 
img.onload = function() { 
     window.open(userGuideUrl1); 
} 
img.onerror = function() { 
    dojo.addOnLoad(warningDialogFunc); 
} 
img.src = userGuideUrl1_img + '?' + (new Date).getTime(); // Trigger image download and the handlers. 
相关问题