Ich habe folgende Sammlung von Funktionen die eigentlich nur dazu dienen sollen bei einem Click-Event auf eine Grafik entsprechende Pixel-Koordinaten zu liefern.
Das Skript sieht folgendermaßen aus:
- <html>
- <head>
- <title>Test</title>
- <link rel=stylesheet type=text/css href=includes/style.css>
- <meta http-equiv="imagetoolbar" content="no">
- <script type="text/javascript">
- var isIE, isNS = false;
- if (navigator.appName == "Microsoft Internet Explorer")
- {
- isIE = true;
- }
- else if (navigator.appName == "Netscape")
- {
- isNS = true;
- }
- function handleMove(ev)
- {
- if(isNS == true)
- {
- cursorX = ev.pageX;
- cursorY = ev.pageY;
- }
- else if (isIE == true)
- {
- cursorX = window.event.offsetX;
- cursorY = window.event.offsetY;
- }
- }
- function event_init()
- {
- if(isNS == true)
- {
- document.captureEvents(Event.CLICK);
- document.onclick = handleMove;
- releaseEvents(Event.CLICK);
- }
- else if (isIE == true)
- {
- document.getElementById("mapimage").onclick = handleMove;
- }
- }
- </script>
- </head>
- <body>
- <table border=0 cellspacing=0 height=100% align=center>
- <tr>
- <td valign=middle><img id=mapimage src=image.gif width=600 height=600 onClick="event_init()" />
- </td>
- </tr>
- </table>
- </body>
- </html>
Nun stellen sich hierbei folgende Phänomene ein:
Im Internetexplorer (if isIE) spricht das Script erst nach dem dritten (!?) Klick an.
Im Firefox oder Netscape (if isNS) wird das Skript ab dem dritten Klick doppelt durchlaufen. Desweiteren wird captueEvents in Firefox und Netscape nicht duch release.Events wieder beendet.
Ne richtig knackige Rätselnuss, oder?
Wo liegt der Fehler? Bitte dringenst um tatkräftige Unterstützung.
Anmerkung:
Weiterhin hab ich noch das Problem, dass mir der InternetExplorer schon die Koordinaten innerhalb der Grafik liefert. Der Firefox jedoch bezieht das ganze Browserfenster in seine Berechnung mit ein. Wie kann ich die Distanzen zu den Seitenrändern wieder rausrechnen?