Ist es möglich zu erkennen, wann ein Bild mit jQuery geladen wurde?
Bildlast erkennen
Pablo
Du kannst den … benutzen .load()
Event-Handler, etwa so:
$("#myImg").load(function() {
alert('I loaded!');
}).attr('src', 'myImage.jpg');
Unbedingt anhängen Vor Festlegen der Quelle, oder das Ereignis wurde möglicherweise ausgelöst, bevor Sie einen Handler angehängt haben, um darauf zu lauschen (z. B. Laden aus dem Cache).
Wenn das so ist nicht machbar (Einstellung der src
nach dem Binden), überprüfen Sie, ob es geladen ist, und feuern Sie es selbst ab, wie folgt:
$("#myImg").load(function() {
alert('I loaded!');
}).each(function() {
if(this.complete) $(this).load();
});
-
Ist es möglich, dies zu tun:
$("#myImg").live("load", function(){ //dance });
“– Erik Escobedo
21. August 2010 um 14:14 Uhr
-
Bedauerlicherweise,
.load()
ist seit jQuery v1.8 veraltet– SquareCat
19. Oktober 13 um 23:29 Uhr
-
@CummanderCheckov wurde aufgrund von Mehrdeutigkeiten zwischen dem Ereignishandler und dem Ajax-Inhaltsabruf verworfen. Im obigen Code einfach ersetzen
.load(
mit.on('load',
für äquivalente Funktionalität in 1.7+.– Nick Craver
19. Oktober 13 um 23:52 Uhr
-
Darüber zerbreche ich mir seit Stunden den Kopf. Danke @NickCraver. Wir haben ein Anzeigenbild, das dynamisch von einem Anzeigenserver geladen wird, also keine Kontrolle unsererseits. Ich konnte dies verwenden, um zu testen, ob es richtig geladen wurde, sodass ich JS verwenden konnte, um es horz/vert zu zentrieren.
– Markus
13. März 14 um 21:08 Uhr
-
Hallo Nick, wie Cross-Browser-kompatibel ist das? Funktioniert auf IE8, IE9 zuverlässig? Und zweitens, wird der Handler ausgelöst, wenn das Bild sofort aus dem Browser-Cache geladen wird?
– SexyBeast
14. Juni 14 um 19:59 Uhr
Peter Aytai
Es ist genauso einfach, einfaches Javascript zu verwenden:
// Create new image
var img = new Image();
// Create var for image source
var imageSrc = "http://example.com/blah.jpg";
// define what happens once the image is loaded.
img.onload = function() {
// Stuff to do after image load ( jQuery and all that )
// Within here you can make use of src=imageSrc,
// knowing that it's been loaded.
};
// Attach the source last.
// The onload function will now trigger once it's loaded.
img.src = imageSrc;
-
Dies schlägt fehl, wenn Bilder überprüft werden, die sich bereits im Cache befinden.
– vsync
7. April 14 um 17:27 Uhr
Ich habe auch lange darüber recherchiert und festgestellt, dass dieses Plugin dabei wunderbar hilft: https://github.com/desandro/imagesloaded
Es scheint eine Menge Code zu sein, aber … ich habe keinen anderen Weg gefunden, um zu überprüfen, wann ein Bild geladen wurde.
Ganz einfach mit jquery:
$('img').load(function(){
//do something
});
Wenn es versucht wurde mit:
$('tag')html().promise().done(function(){
//do something
}) ;
aber das wird nicht prüfen, ob das Bild geladen ist. Das Feuer ist erledigt, wenn der Code geladen ist. Andernfalls können Sie überprüfen, ob der Code ausgeführt wurde, dann die Funktion img load auslösen und überprüfen, ob das Bild wirklich geladen ist. Also machen wir eine Kombination aus beidem:
$('tag')html('<img src="'+pic+'" />').promise().done(function(){
$('img').load(function(){
//do something like show fadein etc...
});
}) ;
Roman Kosin
Ich denke, das kann dir ein bisschen helfen:
$('img').error(function(){
$(this).attr( src : 'no_img.png');
})
Also, wenn es geladen ist – wird das Originalbild angezeigt. In anderen – wird ein Bild angezeigt, das eine Tatsache mit einem abgestürzten Bild oder einem 404-HTTP-Header enthält.
.