Fehler mit Keyevents in Opera
snoot
- javascript
Hio,
ich habe hier meine Suchfunktion mit einem Suggestscript, welches in jedem Browser, außer in Opera korrekt funktioniert.
Wenn man einen Suchbegriff eingibt, klappt die Liste mit Vorschlägen auf, welche man dann mit der Tastatur (Pfeil rauf/runter) auswählen kann. gleichzeitig wird die Hintergrundfarbe des ausgewählten Elements von weiß auf blau geändert.
In Opera muss man aber a) zwei mal hoch/runter drücken, damit ein Eintrag selektiert wird und b) die Hintergrundfarbe wird nicht mehr auf weiß zurückgesetzt wenn man das nächste Element markiert. Die Fehlerkonsole liefert mir dabei auch Fehler, die ich aber nicht so ganz verstehe.
Beim ersten Drücken (wo also noch nichts markiert wird) kommt da:
»» 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);
Beim zweiten Mal, also dann, wenn das Element markiert wurde:
»» Error:
»» name: TypeError
»» message: Statement on line 117: Cannot convert undefined or null to Object
»» Backtrace:
»» Line 117 of linked script http://www.halbleiter.org/javascript/key.js: In function keyPressed
»» curElement.previousSibling.style.color = '#000';
»» ... Line 28 of linked script http://www.halbleiter.org/javascript/key.js: In function handleEvent
»» callBack.call(callBack,event,target,(returnParams)?returnParams:null);
Das scheint auch immer so weiter zugehen. Beim ersten Drücken der erste Fehler, beim zweiten der andere.
Google liefert mir zu Cannot convert undefined or null to Object den Hinweis, dass wohl eine ID nicht korrekt übergeben wurde, was bei mir aber eigentlich der Fall ist. In meinem Suchformular habe ich folgendes:
<input type="text" id="eingabe" name="searchexp" tabindex="1" onkeyup="load(this, 'suggests', 'eingabe', event)">
Die Funktion load() übergibt also die Eingabe-ID eingabe, welche im Script suggest.js als txt_id übernommen wird:
function load(suchbegriff, div_id, txt_id, e) { ...
Und das wird dann wiederum als Funktion keynavigation an die in der Fehlermeldung aufgeführte key.js weitergegeben.
Also müsste doch eigentlich alles vorhanden sein - was gefällt Opera denn daran nicht?