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


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

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

Каковы все html-элементы, которые запускают событие load? (таким образом, выполняется javascript, поставляемый в атрибуте onload)

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

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

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 является ли событие специфичным для body, frame, iframe, img, link, и script элементы. В основном все, что представляет собой загружаемый ресурс. Для body это и есть рассматриваемый документ. Для остальных каждый из них достаточно очевиден.

Многие элементы имеют событие onload. Вы можете найти их здесь

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

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