Netzulf: Welche Funktion steckt hinter Tab-Taste

Hallo zusammen,

wer weiß, welche Funktion sich hinter der Tabulator Taste versteckt?
Ich versuche diese Funktion nachzuprogrammieren, damit ich mit den Cursortasten durch die Links navigieren kann.
Prnzipiell die einfachste Möglichkeit ist, den Keycode einfach zu ändern, wenn er ankommt - so ist die Tabulatorfunktion ganz einfach von einer anderen Taste aus zu belegen.
Wenn ich nun aber zurücknavigieren möchte, also die Shift+Tab Funktion verwenden weill, klappt das nicht mehr.
Daher zweite Möglichkeit:

document.links[zaehler].focus();
zaehler--;                       //(oder natürlich zaehler++;)

Funktioniert eigentlich auch, nur mit noch einer Einschränkung, an der ich mir schon lange verzweifelt die Zähne ausbeiße:
Hier werden auch versteckte Links angesprochen, die Tabfunktion hingegen setzt den Focus nur auf sichtbare Elemente. Wenn der Focus aber auf ein unsichtbares Element gesetzt wird, gibt`s natürlich ne Fehlermeldung.
Eine Abfrage, ob der Focus gesetzt werden kann, funktioniert auch nicht (insofern dies richtig programmiert ist):

if (document.links[selection].focus)document.links[selection].focus();

Wär prima, wenn jemand ne Idee hat, das Problem zu lösen.

MfG Netzulf

  1. Hallo du da draußen,

    Hier werden auch versteckte Links angesprochen, die Tabfunktion hingegen setzt den Focus nur auf sichtbare Elemente. Wenn der Focus aber auf ein unsichtbares Element gesetzt wird, gibt`s natürlich ne Fehlermeldung.

    Nunja, wie sind denn deine Links versteckt? Wenn sie zum Beispiel mit display:none versteckt sind, dann überprüfe das doch einfach mit
    if (document.links[selection].style.display != "none")
      document.links[selection].focus();
    oder so.

    Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de/),
    Candid Dauth (Dogfish)

    --
    Selten Dumme sind nicht selten, aber dumm.
    http://dogfish.net.tc/
    1. Hallo,

      die Links sind in einem Navigationsbaum drin, gibt`s hier (ein sehr komfortabler Baum, wie ich finde):

      http://www.destroydrop.com/javascripts/tree/

      Die Links werden nicht explizit versteckt, sie sind dort nur nicht direkt anwählbar, wenn sie zugeklappt werden.

      Gruss Netzulf

  2. Hallo,

    wer weiß, welche Funktion sich hinter der Tabulator Taste versteckt?
    Ich versuche diese Funktion nachzuprogrammieren, damit ich mit den Cursortasten durch die Links navigieren kann.

    Willst du das auf _deiner_ Seite einbinden oder in deinem Browser daheim für dein privates Surfvergnügen?
    Falls zweitens der Fall sein sollte, dann frag doch einfach jemanden, der sich im Mozilla-Source-Gewurschtel auskennt, das gewünschte kann man bestimmt durch eine recht kleine Änderung erreichen, dann brauchst dus dir nur noch selber zu bauen.

    Viele Grüße,

    Stefan

    1. Hallo,

      Willst du das auf _deiner_ Seite einbinden oder in deinem Browser daheim für dein privates Surfvergnügen?

      sollte eigentlich schon auch im Netz funktionieren - find die Idee eigentlich nicht schlecht, dass ich zusätzlich den Navigationsbaum wie den Explorer bedienen kann (per Cursortasten). Die Tab-Taste mache ich deswegen natürlich nicht arbeitslos - die darf ihre ihr angetraute Funktion natürlich ungehindert ausführen :-)

      Wär doch nicht so schlecht, wenn ich im besten Falle auch ohne Maus auf den Seiten komfortabel surfen kann, oder?

      Gruss Netzulf

  3. Hallo Ulf,

    document.links[zaehler].focus();
    zaehler--;                       //(oder natürlich zaehler++;)

    Hier werden auch versteckte Links angesprochen, die Tabfunktion hingegen setzt den Focus nur auf sichtbare Elemente.

    http://selfhtml.teamone.de/javascript/objekte/document.htm#get_elements_by_tag_name und
    http://selfhtml.teamone.de/javascript/objekte/node.htm#parent_node dürfte das richtige für dich sein.

    document.getElementsByTagName("a")[zaehler].style.visibility
    oder für den Fall, dass das Elternelement unsichtbar ist über den parent:
    document.getElementsByTagName("a")[zaehler].parentNode.style.visibility

    HTH

    Jochen

    1. Hallo Jochen,

      geht leider nicht, da die Elemente nicht explizit auf hidden gesetzt werden. Versuche das in folgendem Navigationsbaum zu realisieren:

      http://www.destroydrop.com/javascripts/tree/

      Und der setzt die Elemente nicht direkt auf hidden oder visible - hab mal nen Workaround probiert, in dem zuerst der ganze Baum eingelesen wird und wenn keine Fehlermeldung beim Focussetzen auftritt (mittels try.. catch.. Funktion), in einem Array die Eigenschaft auf visible gesetzt wird. Problem dabei ist aber, dass dann bei kleinen Bildschirmauflösungen der Baum immer "springt", weil der Focus auf jedes Element einmal gesetzt wird.

      Gruss Netzulf

  4. Hi,

    document.links[zaehler].focus();
    zaehler--;                       //(oder natürlich zaehler++;)

    Das simuliert dann aber nicht tab/shift-tab.

    Denn tab/shift-tab springt auch form-controls an.
    Und eine weitere Einschränkung hast Du ja auch schon gefunden:

    Hier werden auch versteckte Links angesprochen, die Tabfunktion hingegen setzt den Focus nur auf sichtbare Elemente. Wenn der Focus aber auf ein unsichtbares Element gesetzt wird, gibt`s natürlich ne Fehlermeldung.

    Wenn es nur für Dich sein soll: versuche, das in den Browsereinstellungen zu ändern.

    Falls es für die Besucher Deiner Seite sein soll:
    Wer wird das benutzen?

    • Die meisten User werden ohnehin die Maus nehmen.
    • Die User, die lieber die Tastatur verwenden, werden Tab/Shift-Tab verinnerlicht haben, brauchen das also nicht.
    • bleibt noch ein kleiner Rest? Oder bleibt gar kein Rest?

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    1. Hallo Andreas,

      ich will halt auch den Rest bedienen - wozu macht man sich sonst die Mühe, seine Seiten für verschiedene Browser zu gestalten? Da ist auch nur ein kleiner Rest vorhanden, der nicht den Mainstreamexplorer nutzt. Aber die will man ja auch nicht hängen lassen :-)

      Gruss Netzulf

    1. Hi Netzulf!

      Sorry, hatte deine Frage falsch verstanden... Ich sollte nihct soviel auf den Monitor starren...

      Gruß

      mdkiller