edit: Problem gelöst. Aus optischen Gründen hatte ich die Liste die zurückgegeben wird mit Zeilenumbrüchen \n und Tabstopps \t eingerückt. Dadurch hat Opera das falsche Element angesprochen. Jetzt weiß ich auch, warum es früher mal funktioniert hat und seit ich eigentlich nichts geändert hatte, in Opera nicht mehr. Tja, Tabstopps und Zeilenumbrüche sind eben doch etwas und nicht nichts.
Allerdings sollten Whitespaces u.ä. automatisch entfernt werden, dazu gabs eine Funktion im JS:
Naja egal, es läuft
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:
Beim zweiten Mal, also dann, wenn das Element markiert wurde:
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:
Die Funktion load() übergibt also die Eingabe-ID eingabe, welche im Script autocomplete.js als txt_id übernommen wird:
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?
Allerdings sollten Whitespaces u.ä. automatisch entfernt werden, dazu gabs eine Funktion im JS:
PHP Code:
function clearSpaces (strOut)
{
strOut = strOut.replace(/li>\s+/gm,'li>');
strOut = strOut.replace(/\s+<li/gm,'<li');
strOut = strOut.replace(/li>\s+<li/gm,'li><li');
return strOut;
};
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);
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);
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);
...
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);
...
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:
PHP Code:
<input type="text" id="eingabe" name="searchexp" tabindex="1" onkeyup="load(this, 'autocomplete', 'eingabe', event)">
PHP Code:
function load(suchbegriff, div_id, txt_id, e) { ...
Also müsste doch eigentlich alles vorhanden sein - was gefällt Opera denn daran nicht?