Toggle Findbar/Searchbar

  • Die Entwicklerwerkzeuge kann man mit STRG+SHIFT+I einblenden und nur mit dieser Kombination auch wieder ausblenden (Edit: Aus irgendeinem Grund vergesse ich das immer: Mit F12 geht es natürlich genauso). Ich hätte gern dasselbe Verhalten für die Suchleiste. Sie wird eingeblendet mit STRG+F, kann aber bisher nur mit ESC wieder ausgeblendet werden. Kann man also ein Toggle-Verhalten erzeugen?

    Nachtrag:
    Ich hatte doch tatsächlich vergessen, bei Mithrandir/Ardiman nachzusehen, ob es vielleicht schon Skripte gibt. Nach Hinweis von Loshombre habe ich das nachgeholt, und, ääähm, was soll ich sagen, ja, gibt’s schon, sogar mit Varianten:

    Ich habe jetzt keines davon getestet, weil aborix' Code in der hier unten folgenden Antwort schön kurz ist und funktioniert.

  • Zur hilfreichsten Antwort springen
  • Ja:

    Code
    (function() {
      if (location == 'chrome://browser/content/browser.xul') {
        document.getElementById('cmd_find').setAttribute('oncommand',
          'if (gFindBar.hidden) { gFindBar.onFindCommand() } else { gFindBar.close() }');
      };
    })();

  • Ja:


    Danke. Ich habe das für mich selbst jetzt mit dem Code aus Menübar ein-/ausblenden, Verhalten ändern? Beitrag#24 zu einem Skript vereinigt.

    Dass Du neben der Kapselungsfunktion auch noch eine Bedingung einführst

    Code
    if (location == 'chrome://browser/content/browser.xul') {


    dient das als zusätzliche Sicherheit?

    EffPeh postet hie und da nützliche Schnipsel, die aber genau das sind. Eventuell sollte man einmal an prominenter Stelle (in einem angepinnten Beitrag zum Beispiel bzw. wir könnten Andreas darauf verlinken lassen) auf diese grundsätzliche Sicherheit eingehen (eventuell mit dem Hinwies, möglichst let zu verwenden?), was denkst Du dazu? Die Schwierigkeit ist, dass „man“ jemand sein muss, der von der Materie mehr als nur ein bisschen Ahnung hat.

  • Die Skripte werden bei jedem Öffnen eines Fensters ausgeführt. Das gilt nicht nur für Hauptfenster (d.s. die üblichen zum Anzeigen von Webseiten), sondern auch für Bibliothek, Browserkonsole, Meldungsfenster usw.

    "chrome://browser/content/browser.xul" ist die Adresse der Hauptfenster und die meisten Skripte sollen nur in diesen wirken. Darum die Abfrage, in welchem Fenster das Skript gerade läuft. Ohne die Abfrage entsteht üblicherweise kein Schaden. In einem anderen Fenster wird meistens die Ausführung an irgendeiner Stelle abgebrochen, meistens weil dort ein vom Skript referenziertes Element nicht vorhanden ist. In der Browserkonsole erscheint dann eine entsprechende Fehlermeldung. Wenn nun ein Skript nicht funktioniert und man in der Konsole nach hilfreichen Meldungen sucht, ist oft nicht gleich festzustellen, ob eine Fehlermeldung einen tatsächlichen Fehler im Skript betrifft oder aufgrund eines anderen Fensters auftritt. Darum vermeide ich solche überflüssigen Fehlermeldungen mit der Abfrage.

    Die einhüllende Funktion ist in erster Linie dazu da, die Entstehung von globalen Variablen zu vermeiden. Das globale Objekt ist dabei das jeweilige Fenster und unerwünschte Wechselwirkungen mit anderen Skripten könnten auftreten.

    Ich weiß nicht, ob solche Themen für so viele Leute nützlich sind, dass wir auf prominenter Stelle darauf eingehen. Vielleicht äussern noch andere ihre Meinung dazu.


  • Die Skripte werden bei jedem Öffnen eines Fensters ausgeführt.


    Danke für die einleuchtende Erklärung.

    Zitat


    Die einhüllende Funktion ist in erster Linie dazu da, die Entstehung von globalen Variablen zu vermeiden. Das globale Objekt ist dabei das jeweilige Fenster und unerwünschte Wechselwirkungen mit anderen Skripten könnten auftreten.


    Eben, das war mir klar. Wegen der fehlenden Kapselung behindern sich zum Beispiel OpenDownloadFolderButtonM.uc.js und RestartFirefox.uc.js. Das war auch der eigentliche Grund für den Vorschlag.

    Zitat


    Ich weiß nicht, ob solche Themen für so viele Leute nützlich sind, dass wir auf prominenter Stelle darauf eingehen. Vielleicht äussern noch andere ihre Meinung dazu.


    Du achtest normalerweise darauf, aber sonst wird oft nur ein Schnipsel hier gepostet. Die Leute sollten wenigstens sensibilisiert sein. Aber genau genommen müssten derzeit vor allem Endor und Mithrandir darauf achten.


  • Ja:

    Aborix, ich hatte irgendwie verdrängt, dass du mir da ein Skript gebastelt hattest, deshalb jetzt erst:

    In Firefox 61 funktioniert es nicht mehr richtig – ich glaube es jedenfalls, ich weiß nämlich nicht mehr, seit wann genau. Mit aktivem Skript wird die Findbar nicht mehr geöffnet. Irgendwann habe ich per Zufall oder Trial & Error bemerkt, dass ich erst 1x Strg+F drücken muss, dann 1x Esc, dann nochmal Strg+F. Manchmal musste ich aber auch mehr als 1x Esc drücken, so dass ich es letztendlich immer gleich mehrmals gedrückt habe. Das Schließen mit Strg+F, weswegen Du das Skript ja geschrieben hast, funktionierte dagegen die ganze Zeit.

    Nach Deaktivierung des Skriptes wird die Leiste mit Strg+F sofort wieder geöffnet, hmpf.

  • Das funktioniert:

    Code
    (function() {
      if (location == 'chrome://browser/content/browser.xul') {
        document.getElementById('cmd_find').setAttribute('oncommand',
          'if (!gFindBar || gFindBar.hidden) { gLazyFindCommand("onFindCommand") } else { gFindBar.close() }'
        );
      };
    })();

  • Das funktioniert:


    Danke, aber hier leider nicht: Das Öffnen geht wieder, dafür will das Schließen mit Strg+F nicht mehr, obwohl Du an dem Teil gar nichts geändert hast (mit Esc geht’s).

    Irrtum, siehe meine nächste Nachricht.

  • Zitat

    Testet bitte noch jemand das Skript?

    Bei mir (Fx 61.0.2, Arch Linux) funktioniert das Skript einwandfrei.


  • Testet bitte noch jemand das Skript?


    Bei mir (Fx 61.0.2, Arch Linux) funktioniert das Skript einwandfrei.

    Ihr wart leider beide schneller als ich, sonst hätte ich mich direkt im anderen Posting korrigieren können: Es handelte sich um einen Copy&Paste-Fehler. Wie ich oben im dritten Beitrag geschrieben hatte, habe ich den Code von Aborix zusammen mit einem Skriptschnipsel von EffPeh zusammengefügt. Das hatte ich gestern Abend nicht bedacht, so dass es am Ende ein paar Klammern zu viel gab. Mir fiel das noch in der Nacht auf, aber es war so spät, dass ich mich hier nicht mehr gemeldet habe. Um es klar zu sagen, nach der Reparatur läuft das Skript bestens. Vielen Dank, Aborix, und Entschuldigung für die Verwirrung.

  • Auf Wunsch hier eine aktualisierte Version von oben:

    (Nur in Zeile 2 geändert, wegen des vorangestellten Kommentars bei mir Zeile 6.)

    Edit: Korrigiert, siehe direkt folgende Antwort von Harff182.
    Edit2: Danke auch an Bege.

    • Hilfreichste Antwort

    Speravir :

    Danke :thumbup:

    Funktioniert allerdings erst, wenn man unten die fehlenden Klammern hinzufügt ;)

    W11 Home 64bit - FF120.x

    Einmal editiert, zuletzt von harff182 (2. Oktober 2021 um 20:26) aus folgendem Grund: Kommentare hinsichtlich Herkunft auf Wunsch von Speravir eingefügt

  • Funktioniert allerdings erst, wenn man unten die fehlenden Klammern hinzufügt

    Ääähh <Peinlich-berührt-Emoji><Facepalm-Emoji>, da hab ich mich selbst ausgetrickst: Wie oben geschrieben, hab ich noch eine weitere Funktionalität integriert, so dass bei mir die schließenden Klammern weiter unten kommen. Wenn beim Einfügen von Code nicht immer die Einzüge zu Beginn entfernt würden (scheint wohl ein Problem mit Unix-Zeilenenden zu sein), wäre mir das wohl aber selbst aufgefallen.

    Deshalb meinerseits an dich: :thumbup:

  • Speravir 30. September 2021 um 20:08

    Hat einen Beitrag als hilfreichste Antwort ausgewählt.
  • Ääähh <Peinlich-berührt-Emoji><Facepalm-Emoji>, da hab ich mich selbst ausgetrickst:

    :D

    Null Problemo...

    Du hattest mich vom Allgemein-Thread ja praktisch hierhin zu Lesen gezwungen :pfeif:

    Gut so :thumbup:

    Nach einigem Lesen und Rumtesten weis ich ich jetzt, daß das toggeln für mich einen Vorteil gegenüber dem ESC-Tastaturshortcut hat.

    Nochn schön Abend...

    W11 Home 64bit - FF120.x

  • […] daß das toggeln für mich einen Vorteil gegenüber dem ESC-Tastaturshortcut hat.

    Eben, für mich auch.

    Eine Bitte: Kannst du noch den Kommentar zur Herkunft von Aborix bei dir hineinkopieren (von mir übernehmen)? Das kann später einmal ungemein helfen.

  • Auf Wunsch hier eine aktualisierte Version von oben:

    (Nur in Zeile 2 geändert, wegen des vorangestellten Kommentars bei mir Zeile 6.)

    Edit: Korrigiert, siehe direkt folgende Antwort von Harff182.

    Danke für den Code. Gerade probiert, da fehlt immer noch }; vor der letzten Zeile.