M
Mr. Snoot
Gast
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 versuche schon seit geraumer Zeit mein Autocomplete-Script in Opera korrekt zum Laufen zu bekommen.
Dort frage ich Pfeiltasten ab, um bei Pfeil nach unten/oben das nächste/vorherige Element einer Liste (<ul><li>...</li></ul>) auszuwählen. In Opera muss man aber immer zweimal drücken, damit das nächste/vorherige Element gewählt wird.
Evtl. steckt der Fehler bei .firstChild, da heißt's im Code:
Lasse ich mir alert(naviElement.firstChild); ausgeben, liefert mir das in Opera [object Text] - in allen anderen Browsern [object HTMLLIElement].
Was bedeutet hier object Text? Greift Opera da auf etwas anderes zu als die anderen Browser? Möglicherweise auf den Text innerhalb der li-Tags und nicht auf die Listenelemente selbst? Oder lieg ich falsch und Opera bezeichnet HTMLLIElement einfach als Text?
alert(naviElement.firstChild.value); liefert mir zudem in Opera undefined in anderen Browsern aber 0.
Wie bringe ich Opera dazu auf HTMLLIElement zuzugreifen?
Getestet hab ich das bisher mit Opa 9 und 10.
Allerdings sollten Whitespaces u.ä. automatisch entfernt werden, dazu gabs eine Funktion im JS:
PHP:
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;
};
Naja egal, es läuft
Hio,
ich versuche schon seit geraumer Zeit mein Autocomplete-Script in Opera korrekt zum Laufen zu bekommen.
Dort frage ich Pfeiltasten ab, um bei Pfeil nach unten/oben das nächste/vorherige Element einer Liste (<ul><li>...</li></ul>) auszuwählen. In Opera muss man aber immer zweimal drücken, damit das nächste/vorherige Element gewählt wird.
Evtl. steckt der Fehler bei .firstChild, da heißt's im Code:
PHP:
case 40: // runter
if(curElement)
{
...
}
else // wenn noch nichts mit der Tastatur ausgewählt wurde
{
curElement = naviElement.firstChild;
document.getElementById(txt_id).value = curElement.firstChild.id;
curElement.style.backgroundColor = '#6990b6';
curElement.style.color = '#FFFFFF';
}
Lasse ich mir alert(naviElement.firstChild); ausgeben, liefert mir das in Opera [object Text] - in allen anderen Browsern [object HTMLLIElement].
Was bedeutet hier object Text? Greift Opera da auf etwas anderes zu als die anderen Browser? Möglicherweise auf den Text innerhalb der li-Tags und nicht auf die Listenelemente selbst? Oder lieg ich falsch und Opera bezeichnet HTMLLIElement einfach als Text?
alert(naviElement.firstChild.value); liefert mir zudem in Opera undefined in anderen Browsern aber 0.
Wie bringe ich Opera dazu auf HTMLLIElement zuzugreifen?
Getestet hab ich das bisher mit Opa 9 und 10.
Zuletzt bearbeitet: