mmofacts.com

Javascript Zoom

gepostet vor 15 Jahre, 5 Monate von Amun Ra

Ich benötige für eine Seite eine Zoom-Funktion.
Dafür habe ich FancyZoom gewählt.
http://www.cabel.name/2008/02/fancyzoom-10.html
Das funktioniert soweit ganz gut,
aber ich habe ein Problem mit dem FF3.
Für jedes zoombare Bild der Seite wird:
links[i].onclick = function (event) { return zoomClick(this, event); };
links[i].onmouseover = function () { zoomPreload(this); };
ausgeführt.
Nun gibt es den seltenen Fall, das ich nach dem Laden der Seite,
die Maus nicht bewegen muss um auf das zu zoomende Bild zu klicken.
In diesem Fall, wird im FF3 zwar das onclick ausgeführt,
aber es wird nur ein leerer Container angezeigt,
da das onmouseover Event nicht statt gefunden hat,
weil die Maus nicht bewegt wurde.
Im IE7, Opera9 und Chrome funktionert es einwandfrei.
Kennt jemand ein Workaround oder hat eine andere Idee.
Oder kennt eine anderes freies Skript?

gepostet vor 15 Jahre, 5 Monate von cherry

Das ist ja ein ekelhafter Bug. Ich würde irgend nen Weg suchen zoomPreload() auszuführen. Leider fallen mir grade nur umständliche Sachen ein:

Du könntest z.B. jedes Bild preloaden - ist aber wohl quatsch wenn du mehr als 1 oder 2 solche Boxen hast.

Oder Du holst Dir die Mauskoordinaten, gehst durch alle klickbaren Objekte und schaust ob die Maus auf dem Objekt liegt; wenn ja: preload. Wenn Du schon ein Javascript Framework benutzt sollte das mit wenigen Zeilen zu machen sein (in Prototype z.B.). Wenn nicht muss jemand anderes noch ne gute Idee haben :-)

gepostet vor 15 Jahre, 5 Monate von Amun Ra

Danke erstmal für die Antworten.
@rami sieht nett aus, aber ich wollte nicht diesen typischen LightBox-Style.
@cherry ich habs mir jetzt ziemlich einfach gemacht,
und zoomPreload() mit ins onclick-Event geschrieben.
links[i].onclick = function (event) { zoomPreload(this); return zoomClick(this, event); };
So funktioniert es nun auch im FF3.
Werd das mal noch ein wenig testen.

gepostet vor 15 Jahre, 5 Monate von cherry

Ohje, na klar. Das ist überhaupt die allereinfachste Lösung. Vielleicht schreibst Du das auch als kurzen Kommentar zu dem Projekt. Falls noch andere das Ding so genau testen wie Du, den Fehler finden und eine Lösung suchen werden sie Dir dankbar sein :-)

Auf diese Diskussion antworten