哪些html标签支持onload / onerror javascript事件属性?
我熟悉onload
的典型用法,如下所示:
<body onload="alert('Hello, World!');"> ... </body>
什么是引发加载事件的所有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:');
另外,通过“使用src或href的所有方法”,您可以忽略不相关或其他通常具有src或href属性的标签,但并非总是如此。
其他可能导致networking故障的事情:
- 应用程序caching
- 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/ 入住在线
有一些明显的testing要做,看是否
onload
是特定于body
, frame
, iframe
, img
, link
和script
元素的事件。 基本上任何代表一个资源被加载。 对于body
,这是有问题的文件。 对于其他人来说,每一个都相当明显。
许多元素都有onload事件。 你可以在这里find它们
但是如果你想testingDOM的加载,那么最好使用window.onload 。 还build议您将HTML代码与HTML代码分开。
根据这个页面 ,你可以使用onload
: <body>
, <frame>
, <frameset>
, <iframe>
, <img>
, <link>
和<script>
。