簡體   English   中英

什么html標簽支持onload / onerror javascript事件屬性?

[英]What html tags support the onload/onerror javascript event attributes?

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

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

觸發加載事件的所有html元素是什么? (從而執行onload屬性中提供的javascript)

例如, img是一個這樣的標記,當some.png加載時,它將執行onload屬性中提供的javascript:

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

以下HTML標記支持'onload':

<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元素將導致請求並在成功或失敗的請求時觸發loaderror事件。 所以,基本上,任何具有srchref屬性的元素,除了這些標記:

a
# What else? Not sure off hand..

並且包括body標簽,因為它具有諷刺意味的是沒有srchref屬性。

下面是一些用於發現這些元素的粗略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屬性可用於跟蹤您的用戶是否具有活動的Internet連接,這是我嘗試使用我的庫check-online.js解決的問題: http ://github.com/devinrhode2/ 入住在線

有一些明顯的測試要做,看看是否

onload是特定於bodyframeiframeimglinkscript元素的事件。 基本上任何代表要加載的資源的東西。 對於body ,這是有問題的文件。 對於其他人來說,每個都很明顯。

許多元素都有onload事件。 你可以在這里找到它們

但是如果你想測試DOM的加載,那么最好使用window.onload 還建議您將javascript代碼與HTML標記分開。

根據此頁面 ,您可以使用onload<body><frame><frameset><iframe><img><link><script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM