Какие html-теги поддерживают атрибуты события javascript onload/onerror?

Я знаком с типичным использованием onload, как в следующем:

<body onload="alert('Hello, World!');">
...
</body>

Каковы все элементы HTML, которые запускают событие загрузки? (таким образом, выполняется JavaScript, предоставленный в атрибуте onload)

Например, img является одним из таких тегов, который будет выполнять JavaScript, предоставленный в onload атрибут, когда some.png загрузил:

<img onload="someImgLoaded()" src="some.png" />

5 ответов

Решение

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 ИЛИ ЖЕ 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. Вы можете найти их здесь

Но если вы хотите проверить загрузку DOM, то лучше всего использовать window.onload. Также рекомендуется отделить код JavaScript от разметки HTML.

onload это событие, специфичное для body, frame, iframe, img, link, а также script элементы. В основном все, что представляет ресурс для загрузки. За bodyЭто документ, о котором идет речь. Для остальных каждый довольно очевиден.

Согласно этой странице вы можете использовать onload с: <body>, <frame>, <frameset>, <iframe>, <img>, <link>, а также <script>,

Другие вопросы по тегам