Was ist falsch an dieser Funktion? Es funktioniert in Opera und Firefox, funktioniert aber nicht unter Safari unter Windows
%Vor%wenn ich versuche, getImage (' Ссылка ') Dieses Bild wurde nicht geladen (da einige servlet.gif alle Anfragen protokolliert) Es funktioniert in Opera und Firefox, aber nicht in Safari. Ich habe versucht "neues Image ()" und "document.createElement ('img')" - das gleiche Ergebnis.
========== UPDATE: Funktion funktioniert gut, wenn es direkt aufgerufen wird, Problem beginnt, wenn es von Ereignis-Listener
aufgerufen wird %Vor%"local" Link funktioniert gut in Firefox, Opera und Safari (aber Safari zeigt alert1, alert2 und dann alarm mit "src" aus irgendeinem Grund, während andere Browser alert1, alertSrc, alert2)
zeigen"Google" Link Opera, Firefox - funktioniert gut (alert1, alertSrc, alert2), aber Safari zeigt nicht - alertSrc. In Safari sehen Sie alert1, alert2 und das ist alles. Servlet "/pic/img.gif" erhält keine Anfrage, wenn jemand auf "Google" Link von Safari klickt.
Was ist das Problem, wie man es löst?
Danke.
Mein erster Eindruck ist, dass Sie in Browsern auf einen Optimierungscode gestoßen sind, der das Laden von Bildern verhindert, die nicht angezeigt werden. So weit:
Safari 4.0.2 (530.19.1):
Firefox Nightly (3.5.3pre, 20090805):
Google Chrome (2.0.172.39):
Internet Explorer (7.0.6001.18000)
Beachten Sie, dass ich den Bildstandort in Ссылка geändert habe, da ich keine Zufallszahlen habe Bildskript läuft gerade. Basierend darauf würde ich vorschlagen, einen Test mit verschiedenen Bildern durchzuführen und nicht vorhandene Bilder, Bilder in Ihrem Cache, Bilder, die sich nicht im Cache befinden, auszuprobieren.
Der Grund dafür, dass die Warnmeldungen nicht unbedingt in der richtigen Reihenfolge sind, besteht darin, dass verschiedene Browser Bilder in verschiedenen Reihenfolgen laden und der alertsrc erst dann erfolgt, nachdem das Bild geladen wurde. Ein guter Test, ob ein Bild geladen ist oder nicht, ist, wenn die Breite 0 ist.
Ich denke, es ist ein Cache-Problem.
Wenn Sie sagen, image.src = url;
javascript geht sofort zum Abrufen des Bildes, und wenn das Bild zwischengespeichert wird, dann verwendet der Browser nur den zwischengespeicherten und löst den Onload aus, und Sie sagen image.onload = function() {};
, aber onload hat bereits ausgelöst, also function()
wird niemals aufgerufen.
Wie auch immer, das ist alles nur meine Spekulation, ich bin mir nicht sicher, ob ich recht habe. Wenn ich jedoch Recht habe, sollten Sie es beheben können, indem Sie image.src = url;
unter image.onload = function() {};
Probieren Sie dieses Beispiel in IE und Safary und funktioniert perfekt.
%Vor%Tags und Links javascript