我熟悉onload
的典型用法,如下:
<body onload="alert('Hello, World!');">
...
</body>
所有能触发load事件的HTML元素有哪些?(因此会执行在onload属性中提供的JavaScript代码)
例如,img
是这样一个标签,当some.png
已加载时,它将执行在onload
属性中提供的JavaScript代码:
<img onload="someImgLoaded()" src="some.png" />
我熟悉onload
的典型用法,如下:
<body onload="alert('Hello, World!');">
...
</body>
所有能触发load事件的HTML元素有哪些?(因此会执行在onload属性中提供的JavaScript代码)
例如,img
是这样一个标签,当some.png
已加载时,它将执行在onload
属性中提供的JavaScript代码:
<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?
为了最大程度地覆盖,最好考虑所有引用URL的HTML元素都会触发请求并在请求成功或失败时触发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:');
onload
和onerror
属性可用于跟踪用户是否拥有活动的互联网连接,这是我正在尝试通过我的库check-online.js解决的问题:http://github.com/devinrhode2/check-online
还有一些明显的测试需要进行,以查看是否...onload
是特定于body
、frame
、iframe
、img
、link
和script
元素的事件。基本上,任何代表需要加载的资源的东西都可以使用该事件。对于body
,它指的是相关文档。对于其他元素,每个元素的含义都很明显。
onload
(来源:http://www.w3.org/TR/html401/interact/scripts.html#adef-onload),而且我*认为*对于脚本标签的`onload`存在一些跨浏览器问题。 - Christoph