2015-10-29 4 views
1

Я использую $("#element").attr("src", "http://url.com/page"); для установки нескольких iframe.Ошибка обработки iframe с js

Есть ли способ определить, произошла ли ошибка HTTP при настройке определенного iframe и обрабатывать его соответственно?

+0

Перекрестный домен iframe или нет? –

+0

Да. Перекрестный домен iframe. – user550385

+0

AFAIK, кросс-домен iframe не запускает какое-либо событие onerror js (возможно, это поведение зависит от браузера) –

ответ

1

onerror событие больше не работает, к сожалению.

Тем не менее, вы можете использовать обходной путь, как это:

  • свяжите load события всех фреймов вы загружаете

  • Бросьте setTimeout с произвольным временем для каждого , как 60000 (1 млн.) Или менее в среднем

Если событие нагрузки срабатывает, снимите 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); 

У него есть несколько ограничений, например, вы не сможете получить код ответа на запрос. Но стоит попробовать.

Смежные вопросы