Modifikation: Tastenkombi Strg+Pos1 (für die FF-Suchbox) einrichten

  • Hallo,

    ich möchte eine Modifikation für die Firefox Suchbar einrichten, sodass die Suchbox (erreichbar mit Strg+F) auf
    die Tastenkombination (Strg+Pos1) anders reagiert.

    Nämlich so: Drücke ich (Strg+Pos1), so soll der (in der Suchbox befindliche) Textcursor aus der Suchbox herausgehen,
    der Focus soll von der Suchbox wechseln zum Browserfenster, und das Browserfenster
    soll auf die Tastenkombination (Strg+Pos1) reagieren. Strg+Pos1 ist nämlich der Befehl, der das Browserfenster dazu
    bringt, dass es "ganz nach oben" scrollt.

    -Kann man für Firefox eine solche Modifizierung (einen Code etc.) einrichten, sodass die Searchbar
    auf die Tastenkombination Strg+Pos1 reagiert, wie ich es oben beschrieb?

  • aborix
    im Firefox Chrome Ordner erstellte ich eine Datei namens "suchbox.js"
    mit deinem Beispiel, und das Beispiel funktioniert. -Danke.

    Ich habe aber eine Zusatzfrage bezüglich Posting #2:

    Wäre es möglich (beim Drücken der Tastenkombination "Strg+Pos1")
    den Tastaturfokus auf die erste auf der Seite vorkommende
    Textarea (oder das erste auf der Seite vorkommende Input-Element) zu
    lenken? Ich fand folgende jQuery Methode im Netz, weiss aber nicht, ob
    man die jQuery Methode genau so in das Script von Posting #2 einbauen kann.

    die jQuery Methode ist :
    $(':input:enabled:visible:first').focus();

  • ich möchte mit javascript die Anzahl der auf der Seite vorkommenden Input-Elemente
    erfassen, und ersetzte die Zeile

    gBrowser.selectedBrowser.focus();

    durch die Zeile:

    alert(document.getElementById('input').length);

    Jedoch funktioniert die Methode...
    document.getElementById('input').length
    ...nicht. Wie erfasse ich die Anzahl der auf der Seite vorkommenden
    Input-Elemente?

  • bei
    document.getElementsByTagName('input').length
    bzw.
    alert(document.getElementsByTagName('input').length)

    ...bekomme ich eine '0' zurückgeliefert, obwohl es auf der Seite das folgende
    input -Element gibt:

    <input autocomplete="off" class="XText " id="txtBenutzerkennung" maxlength="35" name="value_33560617.mainContent_root_txtBenutzerkennung" size="35" style="" type="text">

    Starte ich die FF -Javascript-Umgebung ( "Umschalt+F4" )
    und gebe ein...

    alert(document.getElementsByTagName('input').length)

    und führe es (mit "Strg+R") aus, so kommt '16' heraus.

  • Eine Webseite gehört zum Content-Bereich und nicht zum Chrome-Bereich, s. dazu https://www.camp-firefox.de/forum/viewtopi…031726#p1031726.
    Der Code funktioniert daher nicht in der Browserkonsole und in einem userChromeJS-Skript. Er funktioniert in der Webkonsole, die arbeitet im Content-Bereich, und in einem GM-Skript. In der JavaScript-Umgebung sind beide Bereiche möglich, je nachdem, was bei "Umgebung" eingestellt ist. Voreingestellt ist "Inhalt", das ist der Content-Bereich.

    Für den Zugriff mit im Chrome-Bereich wirkendem JavaScript auf den Content-Bereich benötigt man ein Frame-Skript:

    Code
    gBrowser.selectedBrowser.messageManager.loadFrameScript(
      "data:,content.alert(content.document.getElementsByTagName('input').length)",
      true);

    Einmal editiert, zuletzt von aborix (13. Februar 2018 um 16:13)

  • das folgende Javascript...

    var i,x;
    for(i=0;x=document.getElementsByTagName('input')[i];++i)if(x.type=='text')x.focus()

    ...lenkt den Tastaturfokus auf das erste auf der Seite vorkommende Input-Element, welches
    die Eigenschaft (type=='text')=true hat.

    Wie wandelt man das Javascript in ein Frame-Skript um?

  • Zunächst:
    document.getElementsByTagName('input') liefert alle input-Elemente und sie der Reihe nach anzusprechen geht z.B. mit einem Index:

    Code
    var inputs = document.getElementsByTagName('input');
    for (var i = 0; i < inputs.length; ++i) {
      if (inputs[i].type == 'text') {
        inputs[i].focus();
        break;
      };
    };

    Das Frame-Skript dazu:

  • aborix
    Es funktioniert prima. -Danke.

    Ich habe das Frame-Script erweitert. Das Script hat dann folgende Funktion:

    Drückt man (Strg+Pos1), dann geht der (in der Suchbox befindliche) Textcursor aus der Suchbox heraus,
    der Tastaturfokus wechselt von der Suchbox zum Browserfenster, und der Fokus wechselt auf das erste
    auf der Webseite vorkommende Input-Element, welches die Eigenschaft...
    type=='text' oder type == 'search'
    ...hat, und nicht 'hidden' (hidden=versteckt) ist.

    -Hier die Datei "suchbox.js". Diese erstellte ich im Firefox Chrome-Ordner. Ein FireFox-Neustart ist erforderlich: