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

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

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

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

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

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

Ответы [ 5 ]

16 голосов
/ 25 марта 2009

onload поддерживается следующими тегами HTML:

<body>, <frame>, <frameset>, <iframe>, <img>, <link>, <script>

И следующие объекты Javascript:

image, layer, window

6 голосов
/ 30 сентября 2013

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

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

Необходимо провести очевидное тестирование, чтобы выяснить,

2 голосов
/ 25 марта 2009

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

1 голос
/ 25 марта 2009

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

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

0 голосов
/ 25 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...