Ниже приведен гораздо более полный список элементов, которые запускают событие загрузки, когда запрошенный ресурс заканчивает загрузку:
body # (just fires a load event, doesn't make requests itself)
img
image
link
iframe
frameset
frame
script
embed
object
video ?
source
track
audio ?
source
svg
<input type="image" src="submit.gif" alt="Submit">
<object width="400" height="400" data="helloworld.swf"></object>
<map name="planetmap">
<area shape="rect" coords="0,0,82,126" href="sun.htm" alt="Sun">
webgl?
Для большей части охвата лучше учитывать, что все html-элементы, ссылающиеся на URL, приведут к запросу и вызовут событие load
или error
, когда этот запрос завершится успешно или не удастся. Итак, в основном, любой элемент с атрибутом src
или href
, за исключением следующих тегов:
a
# What else? Not sure off hand..
И включая тег body
, потому что по иронии судьбы у него нет атрибута src
ИЛИ href
.
Ниже приведен грубый javascript для обнаружения этих элементов:
var tagsToIgnore = ['a'];
['src', 'href'].forEach(function(attr) {
console.log('====' + attr + '====');
[].slice.call(document.querySelectorAll('*[' + attr + ']')).forEach(function(el){
if (!~tagsToIgnore.indexOf(el.tagName.toLowerCase())) {
console.log(el.tagName);
}
});
});
console.log('body # :trollface:');
Кроме того, с помощью метода «все с src или href» вы игнорируете нерелевантные или другие теги, которые обычно имеют атрибут src или href, но не всегда.
Другие вещи, которые могут иметь сбои в сети:
Атрибуты
onload
и onerror
могут быть полезны для отслеживания того, есть ли у вашего пользователя активное подключение к Интернету, и я пытаюсь решить это с помощью своей библиотеки check-online.js: http://github.com/devinrhode2/check-online
Необходимо провести очевидное тестирование, чтобы выяснить,