Моя веб-страница использует iframe для сбора контента с других страниц. Все страницы находятся в одном домене.
На главной странице есть способ подтвердить, что все фреймы загружены, и что нет ошибки 404?
Моя веб-страница использует iframe для сбора контента с других страниц. Все страницы находятся в одном домене.
На главной странице есть способ подтвердить, что все фреймы загружены, и что нет ошибки 404?
Страница 404 обрабатывает код состояния HTTP, который включен только в ответ сервера, отправленный в браузер, но не в актуальные window
и document
объекты DOM, к которым может обращаться javascript. Это означает, что, хотя вы, безусловно, можете получить код состояния и предпринять соответствующие действия, вы можете сделать это только тогда, когда ваш javascript получает ответ, например, с запросом jQuery.ajax() или XmlHttRequest для загрузки вашего "iframe" .
Если вышеуказанное не является опцией, единственной возможной возможностью может быть проверка названия и/или тегов H для "404". Хотя это, безусловно, меньше, чем идеальный (я бы хотел увидеть "404, Movie not Found, Movie".), Это ваш единственный вариант.
$('#iframe').load(function (e) {
var iframe = $("#iframe")[0];
if ( iframe.innerHTML() ) {
// get and check the Title (and H tags if you want)
var ifTitle = iframe.contentDocument.title;
if ( ifTitle.indexOf("404")>=0 ) {
// we have a winner! probably a 404 page!
}
} else {
// didn't load
}
});
Предположим, что это ваш html
<html>
<head></head>
<body>
<iframe id="iframe"></iframe>
</body>
</html>
Существует два сценария
Ваш iframe src находится в том же домене, с которого была создана ваша страница.
Ex : page url www.example.com and iframe src www.example.com/iframe
Вы можете использовать jQuery ajax-запрос, чтобы проверить, доступен ли ресурс
$(function() {
$.ajax({
type : "HEAD",
async : true,
url : "www.example.com/iframe"
})
.success(function() {
$("#iframe").attr("src", "www.example.com/iframe");
})
.error(function(){
// Handle error perhaps a failover url
})
});
Ваш iframe src не указывает на тот же домен, с которого была создана ваша страница.
Ex : Page url www.example.com and iframe src www.otherdomain.com/iframe
Теперь браузеры не позволят вам сделать запрос на кросс-сайт из javascript-кода из-за политики перекрестного происхождения. О том, как сделать jsonp запрос.
$(function() {
$.ajax({
url: "www.otherdomain.com/iframe",
dataType: "jsonp",
timeout: 5000,
success: function () {
$("#iframe").attr("src", "www.otherdomain.com/iframe");
},
error: function (parsedjson) {
if(parsedjson.status == "200") {
$("#iframe").attr("src", "www.otherdomain.com/iframe");
} else {
// Handle error
}
}
});
});