Mozilla für Mac treibt mich in den Wahnsinn
lina-
- javascript
moin liebes Forum :)
ich bin auf ein sehr seltsames Problem gestoßen und ich weiss einfach nicht mehr weiter *verzweifel*
folgender (gekürzter) Code wird verwendet:
<html:html>
<head>
<script type="text/javascript">
function load(){
var gImage= document.getElementById('img2');
if (gImage != null) {
orgWidth = gImage.width;
orgHeight = gImage.height;
}
zoom();
}
<title>
<bean:message key="image.view"/>
</title>
</head>
<body onLoad="load();">
<html:img align="center" styleId="img2"src="<%= request.getContextPath() + \"/view?\" + request.getQueryString() %>" />
</body>
</html:html>
Was soll passieren? Die Grafik die über das Viewerservlet angezeigt wird, soll gezoomt werden (wat Überraschung...).
Mit dem Servlet ist soweit alles in Ordnung. Das gibt die Grafik ordentlich aus (in allen Browsern).
Nun möchte ich bei onLoad die Größe der angezeigten Grafik ermitteln. Hierfür spreche ich das Bild mit der ID an. In 99% der Fälle klappt das auch super. Es gibt nur _eine_ winzige Ausnahme (und die auch nur manchmal): Der Mozilla 1.2.1 für Mac (MacMoz wie ich ihn gern nenne) macht Ärger. In wenigen Ausnahmen, mag er die Größe nicht erkennen. Statt dessen gibt er einen Wert von 24 für die Breite (orgWidth) aus.
(Wenns wenigstens 42 wärn ... ;) *scnr*). Dieser Wert ist mir absolut schleierhaft!
Im Filesystem ist die Grafik 640px breit (so wie sie soll). Bevor das Zooming-Geraffel anfängt, wird die Grafik auch in der richtigen Größe angezeigt (also Breite 640px) - das habe ich mit einem Timeout getestet.
Ich habe bereits probiert um Abhilfe zu schaffen:
Wieso kann dieser -PIEP-Browser die Größe der Grafik nicht ordentlich auslesen? Meines Wissens nach, beginnt eine onload-Methode doch erst wenn alles geladen wurde - oder?
Hat jemand vielleicht Erfahrung mit sowas? Ist es ein Bug (was eine tolle Argumentationshilfe gegenüber dem Kunden wäre, ein Update auf Mozilla 1.3 zu wagen)?
Mir würde auch ein work-around helfen. Bin verzweifelt. *schnief*
liebe Grüße aus Berlin
lina-
Hallo Lina,
Wieso kann dieser -PIEP-Browser die Größe der Grafik nicht ordentlich auslesen? Meines Wissens nach, beginnt eine onload-Methode doch erst wenn alles geladen wurde - oder?
soweit mir noch aus Erfahrung in Erinnerung ist, betrifft das nur das Dokument - nicht die Bilder (inwiefern es auch separate Stylesheets und Javascripte betrifft, weiß ich nicht)
Mir würde auch ein work-around helfen. Bin verzweifelt.
Versuche es mal mit .offsetWidth und .offsetHeight!
Gruß aus Berlin!
eddi
Nun möchte ich bei onLoad die Größe der angezeigten Grafik ermitteln. Hierfür spreche ich das Bild mit der ID an. In 99% der Fälle klappt das auch super. Es gibt nur _eine_ winzige Ausnahme (und die auch nur manchmal): Der Mozilla 1.2.1 für Mac (MacMoz wie ich ihn gern nenne) macht Ärger. In wenigen Ausnahmen, mag er die Größe nicht erkennen. Statt dessen gibt er einen Wert von 24 für die Breite (orgWidth) aus.
Ist das nicht die größe für das "Grafik nicht vorhanden" Icon?
Was teht in den wenigen Fälen wo es nicht klappt in der .src Eigenschaft?
Wieso kann dieser -PIEP-Browser die Größe der Grafik nicht ordentlich auslesen? Meines Wissens nach, beginnt eine onload-Methode doch erst wenn alles geladen wurde - oder?
Ja, zumindest in allen Browsern mit denen ich bisher gearbeitet habe (allerdings nur Win, aber seit Netscape/ IE 3)
Struppi.
moin Struppi :)
Ist das nicht die größe für das "Grafik nicht vorhanden" Icon?
hmmm - das könnte eine Erklärung für die ominösen 24px sein. Seltsamerweise ist doch aber die Grafik vor dem zooming zu sehen (in richtiger Größe) - und natürlich habe ich mich im Filesystem vergwissert, dass die Grafik auch tatsächlich vorhanden ist. Spätestens das Servlet würde auch eine Fehlermeldung bringen, wenn sie nicht da wäre.
Was teht in den wenigen Fälen wo es nicht klappt in der .src Eigenschaft?
Da steht die Adresse des Servlets und als Parameter der Pfad der Grafik. Beides ist korrekt. (Wie gesagt: keine Fehlermeldung vom Serlvet)
Wieso kann dieser -PIEP-Browser die Größe der Grafik nicht ordentlich auslesen? Meines Wissens nach, beginnt eine onload-Methode doch erst wenn alles geladen wurde - oder?
Ja, zumindest in allen Browsern mit denen ich bisher gearbeitet habe (allerdings nur Win, aber seit Netscape/ IE 3)
Das würde ja meine Vermutung bestätigen, dass die Grafik einfach noch nicht geladen ist. Aber warum ist sie es dann nicht nach 10 Sekunden? So groß sind die Bilder nicht, dass eine solche Zeit gerechtfertigt wäre.
liebe Grüße aus Berlin
lina-
Ist das nicht die größe für das "Grafik nicht vorhanden" Icon?
hmmm - das könnte eine Erklärung für die ominösen 24px sein. Seltsamerweise ist doch aber die Grafik vor dem zooming zu sehen (in richtiger Größe) - und natürlich habe ich mich im Filesystem vergwissert, dass die Grafik auch tatsächlich vorhanden ist. Spätestens das Servlet würde auch eine Fehlermeldung bringen, wenn sie nicht da wäre.
Wieso?
Was teht in den wenigen Fälen wo es nicht klappt in der .src Eigenschaft?
Da steht die Adresse des Servlets und als Parameter der Pfad der Grafik. Beides ist korrekt. (Wie gesagt: keine Fehlermeldung vom Serlvet)
Ich meine konkret hier:
var gImage= document.getElementById('img2');
if (gImage != null) {
orgWidth = gImage.width;
orgHeight = gImage.height;
}
Wenn ich dich richtig verstanden habe erhälst du für orgWidth/Height den Wert 24.
Dann würde ich mal das einbauen:
if (gImage != null) {
orgWidth = gImage.width;
orgHeight = gImage.height;
if(orgWidth == 24) alert(gImage.src);
}
Dann wärst du schon mal einen Schritt weiter.
Der nächste Schritt ist, kann der Browser wirklich deine zoom-Funktion? (Nach deiner Beschreibung schon)
Und dann weiß ich erst mal auch nicht weiter.
Struppi.
moin Struppi :)
Dann würde ich mal das einbauen:
if (gImage != null) {
orgWidth = gImage.width;
orgHeight = gImage.height;
if(orgWidth == 24) alert(gImage.src);
}
hab ich natürlich sofort gemacht. Nur leider meldet sich mein fehlergeplagter Kunde nicht mehr (passiert ab und an, dass tagelang Funkstille ist). Hier kann ich den Fehler aber nicht nachvollziehen, so dass ich auf seine Hilfe angewiesen bin. Sobald er sich meldet, schreib ich das Ergebnis.
.oO(Vielleicht meldet er sich ja auch nicht mehr, weil sich der Fehler erledigt hat *hoff*)
liebe Grüße aus Berlin
lina-