<script type="text/javascript">
// front end cache bust
var cacheBust = ['js/StrUtil.js', 'js/protos.common.js', 'js/conf.js', 'bootstrap_ECP/js/init.js'];
for (i=0; i < cacheBust.length; i++){
var el = document.createElement('script');
el.src = cacheBust[i]+"?v=" + Math.random();
document.getElementsByTagName('head')[0].appendChild(el);
}
</script>
Событие load
/ onload
не пузырится ( ссылка , ссылка ), поэтому то, что вы просите, невозможно. Вам нужно будет привязать обработчик событий к каждому узлу изображения.
Array.prototype.forEach.call(document.querySelectorAll('img'), function (elem) {
elem.addEventListener('load', function () {
this.style.display = 'inline';
});
if (elem.complete) {
elem.style.display = 'inline';
}
});
Событие «load» не будет срабатывать, если изображение уже загружено случайно; таким образом, мы проверяем, установлен ли complete
.
Вы можете использовать обработчик события Image.onload
, но не задействовано.
var i = new Image;
i.onload = function() {
this.style.display = 'block';
}
Использовать захват прослушивателя событий на каком-то узле DOM, отличном от window
(body
или другого родителя интересующих элементов изображения):
document.body.addEventListener(
'load',
function(event){
var tgt = event.target;
if( tgt.tagName == 'IMG'){
tgt.style.display = 'inline';
}
},
true // <-- useCapture
)
При этом вам не нужно (re ) присоединить обработчики событий при повторении через document.images
.
И это будет работать и с динамически вставленными изображениями.
То же самое верно для событий загрузки изображения error
. MDN: addEventListener
$('img').on('load', function() {
$(this).show()
})
Без библиотек:
window.onload = function() {
var imgs = document.querySelectorAll('img')
imgs.onload = function() {
this.style.display = 'inline';
}
}
window.onload
не называется после i> загружены все изображения?
– Felix Kling
20 February 2013 в 18:02
imgs.onload
, как это, вам нужно петли) – bfavaretto 21 February 2013 в 23:17