Какие 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 ответов:
'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, но не всегда.
Другие вещи, которые могут иметь сетевые сбои:
- Кэш Приложений
- XMLHttpRequest
- WebSocket
- PeerConnection (WebRTC)
- от: http://docs.webplatform.org/w/index.php?search=onerror&fulltext=+ & title=Special%3ASearch
onload
иonerror
атрибуты могут быть полезны для отслеживания того, есть ли у вашего пользователя активное подключение к интернету, что я пытаюсь решить с помощью своей библиотеки check-online.js: http://github.com/devinrhode2/check-onlineСуществует некоторое очевидное тестирование, которое должно быть сделано, чтобы увидеть, является ли
onload
является ли событие специфичным дляbody
,frame
,iframe
,img
,link
, иscript
элементы. В основном все, что представляет собой загружаемый ресурс. Дляbody
это и есть рассматриваемый документ. Для остальных каждый из них достаточно очевиден.
Согласно этой странице , вы можете использовать
onload
с:<body>
,<frame>
,<frameset>
,<iframe>
,<img>
,<link>
, и<script>
.