Я использую $("#element").attr("src", "http://url.com/page");
для установки нескольких iframe.Ошибка обработки iframe с js
Есть ли способ определить, произошла ли ошибка HTTP при настройке определенного iframe и обрабатывать его соответственно?
Я использую $("#element").attr("src", "http://url.com/page");
для установки нескольких iframe.Ошибка обработки iframe с js
Есть ли способ определить, произошла ли ошибка HTTP при настройке определенного iframe и обрабатывать его соответственно?
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);
У него есть несколько ограничений, например, вы не сможете получить код ответа на запрос. Но стоит попробовать.
Перекрестный домен iframe или нет? –
Да. Перекрестный домен iframe. – user550385
AFAIK, кросс-домен iframe не запускает какое-либо событие onerror js (возможно, это поведение зависит от браузера) –