哪些 html 标签支持 onload/onerror javascript 事件属性?

IT技术 javascript html onload onerror
2021-02-07 12:15:40

我熟悉 的典型用法onload,如下所示:

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

触发加载事件的所有 html 元素是什么?(因此执行在 onload 属性中提供的 javascript)

例如,img一个这样的标签将在加载onload执行属性中提供的 javascript some.png

<img onload="someImgLoaded()" src="some.png" />
5个回答

以下 HTML 标签支持“onload”:

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

以及以下 Javascript 对象:

image, layer, window

您会认为#Bill the Lizard 自然会在美学上熟悉 Rhinoceros 书,这本书很容易找到。(Javascript 权威指南 - 当然是 O'Reilly。)
2021-03-21 12:15:40
实际上,HTML4.01 只允许onload<frameset> 和 <body>(来源:w3.org/TR/html401/interact/scripts.html#adef-onload),我认为onloadfor script存在一些跨浏览器问题标签
2021-03-30 12:15:40
没有冒犯或任何事情,但我必须-1。你惊人的声誉有助于其他人把你的答案当作“圣经”,然后把它留在那里(包括我,如果我对这个特定的答案不了解的话)。由于还有许多其他因素需要考虑(其中大部分由 Christoph 陈述),这可能是有害的,原因与 w3schools 的原因相同。我认为这个问题一开始应该更彻底,或者至少应该更新以反映当前的标准。如果您编辑此内容,请给我一个评论,以便我可以取消投票。
2021-04-13 12:15:40

以下是在请求的资源完成下载时触发​​加载事件的更全面的元素列表:

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 元素将导致请求并在该请求成功或失败时触发loaderror事件。所以,基本上,任何带有srchref属性的元素,除了这些标签:

a
# What else? Not sure off hand..

并包括body标签,因为讽刺的是它没有srcORhref属性。

下面是一些用于发现这些元素的粗略 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 属性的标签,但并非总是如此。

其他可能导致网络故障的事情:

onloadonerror属性可用于跟踪您的用户是否具有活动的互联网连接,这是我试图通过我的库 check-online.js 解决的问题:http ://github.com/devinrhode2/check-在线的

有一些明显的测试要做,看看是否

在这一点上,我不知道谁会处理 html 5 以外的任何东西......
2021-03-24 12:15:40
“更全面的列表”应该包括有关它所应用的 HTML 版本的信息。
2021-04-02 12:15:40

onload是一个事件特定于bodyframeiframeimglink,和script元件。基本上任何代表要加载的资源的东西。对于body,这是有问题的文档。对于其他人来说,每一个都是相当明显的。

许多元素都有 onload 事件。你可以在这里找到它们

但是如果你想测试 DOM 的加载,那么最好使用window.onload还建议您将 javascript 代码与 HTML 标记分开。

根据这个页面,你可以用onload用:<body><frame><frameset><iframe><img><link>,和<script>