2015-10-29 20 views
1

我使用​​來設置多個iframe。使用js處理iframe時出錯

有沒有辦法確定在設置特定的iframe時是否發生了HTTP錯誤並相應地處理它?

+0

跨域iframe與否? –

+0

是的。跨域iframe。 – user550385

+0

AFAIK,跨域iframe不會觸發任何onerror js事件(也許這種行爲取決於瀏覽器) –

回答

1

不幸的是,的onerror事件不再有效。

不過,你可以使用這樣的解決方法:

  • 綁定一個load事件給所有的I幀的要裝載

  • 拋出一個setTimeout任意時間對於每個,像60000 (1mn)以下

如果加載事件觸發,則清除setTimeout

這不是完整的錯誤處理,更多的解決方法。我以前用JSONP請求來做,因爲沒有錯誤處理。

var timeout; 
$("#iframe").attr("src", "url-cross-domain.html").on("load", function() { 
    clearTimeout(timeout); 
    console.log("loaded !"); 
}): 
timeout = setTimeout(function() { 
    $("#iframe").off("load").remove(); 
    console.error("iframe loading failed"); 
}, 60000); 

它有幾個限制,例如,您將無法獲取請求響應代碼。但值得一試。