Announcement

Collapse
No announcement yet.

Problem mit Keyevents in Opera

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit Keyevents in Opera

    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:

    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;
      }; 
    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:
    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:
    PHP Code:
    <input type="text" id="eingabe" name="searchexp" tabindex="1" onkeyup="load(this, 'autocomplete', 'eingabe', event)"
    Die Funktion load() übergibt also die Eingabe-ID eingabe, welche im Script autocomplete.js als txt_id übernommen wird:
    PHP Code:
    function load(suchbegriffdiv_idtxt_ide) { ... 
    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?
    Zuletzt editiert von Mr. Snoot; 31.08.2009, 21:40.
Working...
X