Überprüfe ob Bild existiert
Franz B
- javascript
0 Felix Riesterer0 Franz B0 Der Martin0 Franz B
0 Bademeister
Hallo
Wie kann ich überprüfen, ob ein Bild auch wirklich vorhanden ist?
ich habs so versucht, leider gehts nicht:
thisElem.onerror = function () {
alert(thisElem.src);
}
Thxn
Damian
Lieber Franz B (oder doch Damian?),
thisElem.onerror = function () {
alert(thisElem.src);
}
Eventhandlerfunktionen haben in sich eine neue Bedeutung des Schlüsselwortes "this", sodass Du innerhalb der Funktion mit this
dirket auf das betroffene HTML-Elementobjekt zugreifen kannst.
thisElem.onerror = function () { alert(this.src); };
Bitte nenne die Fehlermeldung(en), die Dir Deine Konsole des Browsers anbietet!
Liebe Grüße,
Felix Riesterer.
Hallo
Vielen Dank.
Das Problem ist, dass thisElem.onerror = function () { har nicht ausgefèhrt wird.
Kann ich per thisElem.onerror abfragen ob das Bild vorhanden ist, stimmit dies?
Hier mein gesamter Code
function existImg(){
var allElems = document.getElementsByTagName('img');
for (var i = 0; i < allElems.length; i++) {
var thisElem = allElems[i];
if (thisElem){
thisElem.onerror = function () {
alert(this.src);
}
}
}
Vielen Dank
Damian Franz b
Hi,
Das Problem ist, dass thisElem.onerror = function () { har nicht ausgefèhrt wird.
wann weist du denn den Eventhandler zu? Nach dem Laden des Bildes oder noch davor?
Kann ich per thisElem.onerror abfragen ob das Bild vorhanden ist, stimmit dies?
Nein, nicht ganz. Der Eventhandler onerror eines Bildobjekts wird aufgerufen, wenn das Laden eines Bildes fehlschlägt. Allerdings muss die Handlerfunktion dann schon zugewiesen sein, wenn der Browser versucht, das Bild zu laden.
Ciao,
Martin
PS: Du scheinst ein Problem mit deinem Tastaturtreiber zu haben, anstatt ü steht in deinem Text immer ein è. Das ist mir schon in einem anderen Posting von dir aufgefallen ...
Hallo
Nein, nicht ganz. Der Eventhandler onerror eines Bildobjekts wird aufgerufen, wenn das Laden eines Bildes fehlschlägt. Allerdings muss die Handlerfunktion dann schon zugewiesen sein, wenn der Browser versucht, das Bild zu laden.
-> Was heisst schon zugewiesen sein? Wie weise ich das zu?
Die Funktion wird wie folgt ausgeführt:
$(window).load(function() {
existImg();
} );
function existImg(){
var allElems = document.getElementsByTagName('img');
for (var i = 0; i < allElems.length; i++) {
var thisElem = allElems[i];
if (thisElem){
thisElem.onerror = function () {
alert(this.src);
}
}
}
Vielen Dank und Gruss
Hi,
Nein, nicht ganz. Der Eventhandler onerror eines Bildobjekts wird aufgerufen, wenn das Laden eines Bildes fehlschlägt. Allerdings muss die Handlerfunktion dann schon zugewiesen sein, wenn der Browser versucht, das Bild zu laden.
-> Was heisst schon zugewiesen sein? Wie weise ich das zu?
genau so, wie du es schon formuliert hast.
$(window).load(function() {
existImg();
} );function existImg(){
var allElems = document.getElementsByTagName('img');
for (var i = 0; i < allElems.length; i++) {
var thisElem = allElems[i];
if (thisElem){thisElem.onerror = function () { alert(this.src); } }
}
So ist das sinnlos. Erst beim onload-Event des Dokuments[1] bindest du die Eventhandler an deine img-Objekte. Zu diesem Zeitpunkt ist das Laden des Dokuments \*einschließlich aller Bilder\* aber per definitionem schon erfolgreich abgeschlossen oder mit Fehler abgebrochen. Ein onerror-Handler, der einem Bild danach noch zugewiesen wird, bleibt wirkungslos, denn das Ereignis ist ja schon lange vorher eingetreten.
Das Setzen des onerror-Handlers darf also nicht erst nach dem Laden des Dokuments erfolgen, sondern schon währenddessen.
Ciao,
Martin
[1] wenn ich die JQuery-Syntax richtig verstehe
--
Die letzten Worte der Challenger-Crew:
Lasst doch mal die Frau ans Steuer!
Hi Felix.
Eventhandlerfunktionen haben in sich eine neue Bedeutung des Schlüsselwortes "this", sodass Du innerhalb der Funktion mit
this
dirket auf das betroffene HTML-Elementobjekt zugreifen kannst.
Wieso neu? In einer Funktion referenziert "this" dasjenige Objekt, dessen Methode sie ist (bzw. als dessen Methode sie aufgerufen wurde). An welcher Stelle ist das denn anders?
Viele Grüße,
der Bademeister