2011-09-27 100 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.