Ich möchte nach dem Laden eines Bildes ein Warnfeld erstellen, aber wenn das Bild im Browser-Cache gespeichert wird, wird das .onload
Ereignis nicht ausgelöst.
Wie löse ich eine Warnung aus, wenn ein Bild geladen wurde, unabhängig davon, ob das Bild zwischengespeichert wurde oder nicht?
var img = new Image();
img.src = "img.jpg";
img.onload = function () {
alert("image is loaded");
}
javascript
image-loading
Oto Shavadze
quelle
quelle
Antworten:
Legen Sie beim dynamischen Generieren des Bildes die
onload
Eigenschaft vor dem festsrc
.Geige - getestet auf den neuesten Firefox- und Chrome-Versionen.
Sie können auch die Antwort in diesem Beitrag verwenden , die ich für ein einzelnes dynamisch generiertes Bild angepasst habe:
Geige
quelle
.src
bevor Sie .onload einstellen? Sie hatten es im ersten Codebeispiel richtig gemacht, aber das zweite durcheinander gebracht. Die zweite Funktion funktioniert in einigen IE-Versionen nicht ordnungsgemäß.=]
Es wird.complete
überprüft, ob das Bild bereits zwischengespeichert wurde, daher wurde es vom Code demonstriert. Für die beste Vorgehensweise können Sie natürlich immer diesrc
Bindung aller Handler festlegen..complete
In diesem Fall gibt es keinen Grund, sich darauf zu verlassen . Stellen.src
Sie einfach Ihren Load Handler zuerst ein, bevor Sie ihn einstellen, und er wird NIE benötigt. Ich habe eine Diashow geschrieben, die von Tausenden von Websites in jedem denkbaren Browser verwendet wird, und die erste Technik funktioniert jedes Mal. Es ist nicht erforderlich, jemals zu überprüfen,.complete
wann ein neues Bild von Grund auf neu erstellt wird.=]
. Könnten Sie auch @ jfriend00 überprüfen, ob das Bild im IE geladen wird? Ich frage mich, ob es ein Problem mit meinem Netzwerk oder mit dem IE und dem Image ist.img.src = ''
vor dem Zuweisen eines neuen src benötigt wird, wenn es zuvor verwendet wurde.Wenn der src bereits festgelegt ist, wird das Ereignis im zwischengespeicherten Fall ausgelöst, bevor Sie den Ereignishandler überhaupt gebunden haben. Sie sollten das Ereignis also auch basierend auf auslösen
.complete
.Codebeispiel:
quelle
Für diese Art von Situationen gibt es zwei mögliche Lösungen:
Fügen Sie dem Bild ein eindeutiges Suffix hinzu, um das
src
erneute Herunterladen durch den Browser zu erzwingen:In diesem Code wird jedes Mal, wenn Sie am Ende der Bild-URL einen aktuellen Zeitstempel hinzufügen, diese eindeutig und der Browser lädt das Bild erneut herunter
quelle
.onload
Handler fest, bevor Sie den.src
Wert festlegen, und Sie werden das Onload-Ereignis in einigen IE-Versionen nicht verpassen.Ich habe heute das gleiche Problem getroffen. Nachdem ich verschiedene Methoden ausprobiert habe, stelle ich fest, dass das Einfügen des Codes für die Größenbestimmung
$(window).load(function() {})
anstelle vondocument.ready
einen Teil des Problems lösen würde (wenn Sie die Seite nicht ajaxen).quelle
$(document).ready
um$(window).load
mein Problem zu lösen.Ich habe festgestellt, dass Sie dies einfach in Chrome tun können:
Wenn Sie die .src auf sich selbst setzen, wird das Onload-Ereignis ausgelöst.
quelle