Ответ 1
'onload' поддерживается следующими тегами HTML:
<body>, <frame>, <frameset>, <iframe>, <img>, <link>, <script>
И следующие объекты Javascript:
image, layer, window
Я знаком с типичным использованием onload
, как в следующем:
<body onload="alert('Hello, World!');">
...
</body>
Каковы все элементы html, которые запускают событие загрузки? (таким образом, исполняемый javascript поставляется в атрибуте onload)
Например, img
является одним из таких тегов, который будет выполнять javascript, указанный в атрибуте onload
, когда загружен some.png
:
<img onload="someImgLoaded()" src="some.png" />
'onload' поддерживается следующими тегами HTML:
<body>, <frame>, <frameset>, <iframe>, <img>, <link>, <script>
И следующие объекты Javascript:
image, layer, window
Ниже приведен более подробный список элементов, которые запускают событие загрузки, когда запрашиваемый ресурс завершает загрузку:
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
OR 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
Существует несколько очевидных тестов, которые нужно сделать, чтобы увидеть, есть ли
onload
- событие, специфичное для элементов body
, frame
, iframe
, img
, link
и script
. В основном все, что представляет собой загружаемый ресурс. Для body
, это документ, о котором идет речь. Для остальных каждый из них достаточно очевиден.
Многие элементы имеют событие onload. Вы можете найти их здесь
Но если вы хотите протестировать загрузку DOM, лучше использовать window.onload. Также рекомендуется отделить код javascript от разметки HTML.
В соответствии с эта страница, вы можете использовать onload
с помощью: <body>
, <frame>
, <frameset>
, <iframe>
, <img>
, <link>
и <script>
.