2016-04-05 2 views
0

Я разрабатываю приложение для смартфонов, загружая веб-просмотр. Иногда из-за проблем с сетью (Интернет внезапно теряется или слишком медленный) все ресурсы не загружаются (изображения, звук ...). Я знаю, что есть способы узнать, когда загрузка html-страницы заканчивается (onLoad, ...), но я не знаю, что они делают в конкретном случае, когда один из ресурсов не удалось загрузить из-за сетевой проблемы. И я не могу найти способ вручную протестировать его.Обнаружение ошибки загрузки ресурса

Возможно ли, когда документ html загружен, чтобы узнать, нельзя ли загрузить какие-либо ресурсы по какой-либо причине? Я точно знаю, что я не знаю конкретного содержимого html.

Например, is onLoad Событие кузовов в этом случае? Переключается ли переключатель document.readyState в состояние «завершено»?

+0

Событие 'window.onload' запускается при загрузке всех ресурсов –

ответ

0

Ну, нет никакого способа, чтобы проверить это сразу, но вы можете попробовать явно загружать изображения затем прослушивать события:

var img = new Image(); 
img.onload = function(){ 
    alert('Okay'); 
} 
img.onerror = function(){ 
    alert('Nope'); 
} 
img.src = "something.png"; 

Один интересный (если возможно некрасиво) взломать вы можете использовать, если вы хотите , скажем, предварительно загружать звуки или скрипты в кеш для использования позже, заключается в том, что вы можете попросить браузер загрузить его как изображение, как указано выше; до тех пор, пока он существует и загружается, это не вызовет ошибки, хотя это не является чем-то отображаемым; самое главное, он будет правильно сохранен в кеше, поэтому вы можете использовать его почти сразу.

+0

Я не могу этого сделать в моем случае. Я не контролирую содержание страницы. – Laetan

+0

Ну, если вам это действительно нужно, вы можете отсканировать страницу, чтобы найти, какие изображения вы используете, а затем использовать технику выше. Если изображение уже загружено, оно попадет в кэш и сразу вызовет onload; если он не был загружен, браузер попытается перезагрузить его и запустить соответствующее событие в соответствии с результатом. Его можно даже использовать для ремонта частично загруженных изображений. –

+0

Прохладный трюк. Я попробую. – Laetan

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