Forum Doku Wiki Blog

Forumsarchiv 2009, Mai
Probleme mit Keyevents

archivierte Beiträge lesen

  1. (JAVASCRIPT) Probleme mit Keyevents von snoot, 13. 05. 2009, 23:40

Probleme mit Keyevents

Der folgende Beitrag wurde am 13. 05. 2009, 23:40 Uhr von snoot veröffentlicht.

Hio,

ich habe ein Suggestskript für ein Suchformular. Die Vorschläge werden in ein zunächst leeres div als Liste eingefügt:

Also zunächst: <div id="suggest"></div>

Mit Vorschlägen:
<div id="suggest">
  <ul>
    <li>..</li>
    <li>..</li>
    <li>..</li>
  </ul>
</div>


Diese Listenelemente kann ich mit der Tastatur - Pfeiltasten rauf/runter - auswählen. Das ausgewählte Element wird dabei in das Sucheingabefeld übernommen, und die Hintergrund- und Schriftfarbe des Listenelements geändert (von Schriftfarbe schwarz/Hg-Farbe weiß --> Schriftfarbe weiß/Hg-Farbe blau). Geht man zum nächsten Elemente, werden die Farben vom zuletzt gewählten Element wieder zurückgesetzt.

Das klappt in allen Browsern wunderbar - nur in Opera nicht. Ich bin mir aber sicher, dass es schon mal geklappt hat. Ich habe aber am Skript nichts mehr geändert, aber ggf. eine neue Operaversion installiert; im Moment ist es die aktuellste (9.64). Da es sonst überall klappt, hab ich gar keine Idee, was da los sein könnte.

Zwei Probleme in Opera gibt es:

  a) man muss zum rauf-/runterscrollen die jew. Pfeiltaste immer zweimal drücken, um das nächste Element auszuwählen
  b) die Farbe wird nicht mehr zurückgesetzt. Jedes Element bleibt also dauerhaft markiert.

Zu sehen gibt es das ganze hier.

Das Javascript zur Tastaturnavigation liegt hier (ich wollts nicht hier reinkopieren, weil es so lang ist). Ich prüfe dabei immer, welches Element gerade aktiv ist und ändere die Farben, und setze - je nachdem, ob man von oben oder von unten kommt - das vorherige Element wieder zurück auf die Standardfarben.

Bei einem Tastendruck wird einfach immer das nächste Element ausgewählt (case 38: ... bzw. case 40: ...; Zeile 59 bzw. 93) - was kann Opera daran stören, so dass man immer zweimal drücken muss und wieso ändern sich die Farben nicht mehr?


Falls nötig gibt es hier noch das Ajax-Skript und hier das Skript, welches durch die Sucheingabe aufgerufen wird, und dann das Skript zur Navigation aktiviert bzw. die durch Ajax erzeugte Liste im div-Tag ausgibt.


Wär echt genial, wenn jemand weiß, was da kaputt ist.

Probleme mit Keyevents

Der folgende Beitrag wurde am 14. 05. 2009, 11:04 Uhr von Don P veröffentlicht.

Hallo,

> Wär echt genial, wenn jemand weiß, was da kaputt ist.

Die Fehlerkonsole von Opera weiß es ganz genau:
--------------------------------------------------------------
CSS - http://www.halbleiter.org/stylesheets/main.css
Linked-in stylesheet
-moz-box-sizing is an unknown property
Line 34:
   -moz-box-sizing:border-box;
  -----------------^
CSS - http://www.halbleiter.org/stylesheets/main.css
Linked-in stylesheet
Selector syntax error
Line 394:
    width:20%;
  -------^
CSS - http://www.halbleiter.org/suche/
HTML style attribute
Invalid value for property: font
Line 1:
  font:verdana; font-size:10px
  -------------^
JavaScript - http://www.halbleiter.org/suche/
Event thread: keydown
Error:
name: TypeError
message: Statement on line 125: Cannot convert undefined or null to Object
Backtrace:
  Line 125 of linked script http://www.halbleiter.org/javascript/key.js: In function keyPressed
            document.getElementById(txt_id).value = curElement.firstChild.id;
  ...  Line 28 of linked script http://www.halbleiter.org/javascript/key.js: In function handleEvent
        callBack.call(callBack,event,target,(returnParams)?returnParams:null);
-------------------------------------------------------------------

Gruß, Don P

Probleme mit Keyevents

Der folgende Beitrag wurde am 14. 05. 2009, 11:32 Uhr von Don P veröffentlicht.

Hallo,

Es gibt anscheinend ein Problem mit
document.getElementById(txt_id)
weil txt_id undefined oder null ist.

Man muss also annehmen, dass currentTarget (Zeile 27) in Opera anscheinend nicht das enthält, was es sollte. Hier musst du ansetzen.

BTW, das Feature mit der Vorschlagliste gefällt mir ganz gut, außer in Opera ;-)

Gruß, Don P

Probleme mit Keyevents

Der folgende Beitrag wurde am 14. 05. 2009, 18:06 Uhr von snoot veröffentlicht.

> Die Fehlerkonsole von Opera weiß es ganz genau:
> Es gibt anscheinend ein Problem mit
> document.getElementById(txt_id)
> weil txt_id undefined oder null ist.
>
> Man muss also annehmen, dass currentTarget (Zeile 27) in Opera anscheinend nicht das enthält, was es sollte. Hier musst du ansetzen.

Aah, wusste gar nicht, dass Opera sowas hat, vielen Dank :)

Werde mal Nachforschungen anstellen, was da nicht stimmt.

> BTW, das Feature mit der Vorschlagliste gefällt mir ganz gut, außer in Opera ;-)

Danke. Aber die Tastaturnavigation wäre noch verbesserungswürdig - unabhängig von dem Problem jetzt :)


Gruß
snoot

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4