は、私が使用できます:イメージの読み込みイベントにバブリングが使用できますか?
window.addEventListner();
何らかの方法で。
すべての画像にはdisplay = 'none'
があります。画像が読み込まれたら
は私がdisplay = 'inline'
私はイメージがダウンロードされている間に表示される内容を標準化することができるこの方法を設定したいです。
この場合、画像をプリロードできません。ライブラリなし
は、私が使用できます:イメージの読み込みイベントにバブリングが使用できますか?
window.addEventListner();
何らかの方法で。
すべての画像にはdisplay = 'none'
があります。画像が読み込まれたら
は私がdisplay = 'inline'
私はイメージがダウンロードされている間に表示される内容を標準化することができるこの方法を設定したいです。
この場合、画像をプリロードできません。ライブラリなし
あなたはImage.onload
イベントハンドラを使用することができますが、関与発泡は全くありません。
var i = new Image;
i.onload = function() {
this.style.display = 'block';
}
Array.prototype.forEach.call(document.querySelectorAll('img'), function (elem) {
elem.addEventListener('load', function() {
this.style.display = 'inline';
});
if (elem.complete) {
elem.style.display = 'inline';
}
});
画像が偶然にすでにロードされている場合は、「ロード」イベントがトリガされません。したがって、complete
が既に設定されているかどうかを確認します。
使用window
以外のいくつかのDOMノード(body
または関心の画像要素の他の親)にイベントリスナーをキャプチャ:あなたは添付(再)にはありません。これにより
document.body.addEventListener(
'load',
function(event){
var tgt = event.target;
if(tgt.tagName == 'IMG'){
tgt.style.display = 'inline';
}
},
true // <-- useCapture
)
イベントハンドラはdocument.images
を反復処理します。
これは動的に挿入された画像にも有効です。
Same is true for image's error
loading events. MDN:あなたのための私の答えを更新しaddEventListener
イメージロードイベントのイベントデリゲートにこれを試したことはありませんでした。非常に素晴らしい!そして、それがウィンドウすることができない理由は: "レガシーの理由のために、ドキュメント(例えば、イメージ)内のリソースに対するロードイベントは、HTMLインプリメンテーションにおける伝播経路内のウィンドウを含まない" – Adria
「異常に」さえありません。もう1つの参考文献:http://www.w3.org/TR/DOM-Level-3-Events/#event-type-load – bfavaretto
私は、これがイベントバブリングの目的だと思ったでしょう。しかし、私は私の質問を更新していないと思います。 –
他の多くの出来事は、「クリック」のように泡立ちます。しかし、 'load'がバブルしないという事実は、イメージをプリロードすることはできません。なぜ、すべての画像に対して 'load'を扱うための関数を一つ作成しないのですか? – bfavaretto