Symbole zu Kontextmenüs mit Javascript und CSS hinzufügen

  • Das Untermenü Web-Entwickler ist nach dem Start nur zu einem kleinen Teil vorhanden. Die restlichen Einträge kommern erst später dazu. Spätestens dann, wenn das Menü zum ersten Mal geöffnet wird, machmal auch früher, wenn ein Entwicklungswerkzeug benutzt wird, z.B. die Browserkonsole geöffnet wird. Mit folgendem Code werden die Klassennamen beim erstmaligen Öffnen des Menüs hinzugefügt:

    JavaScript
    let devPopup = document.getElementById('menuWebDeveloperPopup');
    devPopup.addEventListener('popupshown', () => {
      document.querySelectorAll('#menuWebDeveloperPopup menu')
        .forEach(query => query.classList.add('menu-iconic'));
      document.querySelectorAll('#menuWebDeveloperPopup menuitem')
        .forEach(query => query.classList.add('menuitem-iconic'));
    }, {once: true});
  • Für das Kontextmenü der Entwickler Werkzeuge hätte ich was für dich:

    https://github.com/Endor8/CSS/blo…zeuge/Menus.css

    Symbole sind als Base64 Code integriert.

    Mfg.
    Endor

    Ich versuche es bisher mit dem Hinzufügen der class per JS, weil damit der CSS-Code wesentlich einfacher bleibt und keine extra :hover-Einträge nötig sind. Aber bisher klappt es nicht. Dein CSS-Code wäre die "Notlösung" für mich. Gut, eine zu haben. Vielen Dank dafür.


    Das Untermenü Web-Entwickler ist nach dem Start nur zu einem kleinen Teil vorhanden. Die restlichen Einträge kommern erst später dazu. Spätestens dann, wenn das Menü zum ersten Mal geöffnet wird, machmal auch früher, wenn ein Entwicklungswerkzeug benutzt wird, z.B. die Browserkonsole geöffnet wird. Mit folgendem Code werden die Klassennamen beim erstmaligen Öffnen des Menüs hinzugefügt:

    JavaScript
    let devPopup = document.getElementById('menuWebDeveloperPopup');
    devPopup.addEventListener('popupshown', () => {
      document.querySelectorAll('#menuWebDeveloperPopup menu')
        .forEach(query => query.classList.add('menu-iconic'));
      document.querySelectorAll('#menuWebDeveloperPopup menuitem')
        .forEach(query => query.classList.add('menuitem-iconic'));
    }, {once: true});

    Vielen Dank aborix . Die class wird jetzt hinzugefügt, aber die Symbole werden immer noch nicht angezeigt. Im Inspektor werden jetzt die richtige class und die Symbole angezeigt (sowohl bei Regeln als auch bei Berechnet), aber im Untermenü bleiben sie verschwunden. Ich kann keinen Unterschied erkennen zwischen diesen Einträgen und denen, für die die Symbole angezeigt werden. Was fehlt da noch oder ist im Weg?

    Einmal editiert, zuletzt von bege (5. Februar 2020 um 17:28) aus folgendem Grund: Ein Beitrag von bege mit diesem Beitrag zusammengefügt.

  • Nur zur Info, mit obigen CSS Code werden Symbole dem Kontextmenü hinzugefügt,

    selbige werden direkt von meiner Github Seite geladen.
    Wenn der Code passt, dann aber bitte eigene Symbole verwenden oder meine runter laden
    und lokal einbinden.

    Mfg.
    Endor

    Ich würde diese gerne herunterladen, finde sie aber nicht... kannst du bitte mal einen Link senden oder posten?

    Vielen Dank! :)

  • Nur zur Info, mit obigen CSS Code werden Symbole dem Kontextmenü hinzugefügt,

    selbige werden direkt von meiner Github Seite geladen.
    Wenn der Code passt, dann aber bitte eigene Symbole verwenden oder meine runter laden
    und lokal einbinden.

    Mfg.
    Endor

    Ich würde diese gerne herunterladen, finde sie aber nicht... kannst du bitte mal einen Link senden oder posten?

    Vielen Dank! :)

    Wenn du den jeweiligen url-Link in der Adressleiste eingibst, bekommst du das Bild angezeigt und kannst es mit einem Rechtsklick speichern.

  • aborix

    Drei Beispiele aus dem gleichen Untermenü:

    Seitenquelltext anzeigen (funktioniert)

    CSS
    {-moz-image-region: rect(208px 112px 224px 96px) !important; list-style-image: url("mosaic.png") !important}

    Inspektor (funktioniert nicht)

    CSS
    {-moz-image-region: rect(80px 16px 96px 0) !important; list-style-image: url("mosaic.png") !important}

    Weitere Tools laden (funktioniert nicht)

    CSS
    {-moz-image-region: rect(432px 160px 448px 144px) !important; list-style-image: url("mosaic.png") !important}

    Während mehrerer Neustarts heute wurden die Symbole nach einem Neustart angezeigt, nach dem nächsten war es wieder vorbei mit der Herrlichkeit.

  • Ich kann das bestätigen. Ich habe keine Idee, warum das so ist und auch keine Lösung.

    aborix Danke für deine Unterstützung! Ich bin froh, dass es weitgehend funktioniert. Eine kleine Hoffnung habe ich noch: Schon manches Mal, wenn du in diesem Forum geschrieben hast, du wüsstest keine Lösung, hast du später doch noch eine gefunden 8)

    Hast du noch eine Idee, wie die CSS-Klassen auch zum Kontextmenü für die Tabs bei Verwendung von TreeStyleTab hinzugefügt werden können?

    Die Einträge stehen unter menupopup id=contentAreaContextMenu, das ist die gleiche ID wie beim normalen Seiten-Kontextmenü. In letzterem sind die Klassen hinzugefügt, bei ersterem fehlen sie.

  • bege 7. Februar 2020 um 02:26

    Hat den Titel des Themas von „about:addons mit Javascript verändern?“ zu „Symbole zu Kontextmenüs mit Javascript und CSS hinzufügen“ geändert.
  • Eine kleine Hoffnung habe ich noch: Schon manches Mal, wenn du in diesem Forum geschrieben hast, du wüsstest keine Lösung, hast du später doch noch eine gefunden 8)

    Deine Hoffnung scheint sich zu erfüllen. 8)

    Folgender Test setzt voraus, dass die Web-Konsole unten oder seitlich angefügt und nicht in einem eigenen Fenster geöffnet wird; das ist ohnehin die Standardeinstellung.

    Lass den Code aus #21 weg und nimm folgenden hinzu:

    Bei den Timeouts sind vielleicht höhere Werte nötig.

    Einmal editiert, zuletzt von aborix (8. Februar 2020 um 00:32)

  • Deine Hoffnung scheint sich zu erfüllen. 8)

    ... und schneller als erhofft :)


    Folgender Test setzt voraus, dass die Web-Konsole unten oder seitlich angefügt und nicht in einem eigenen Fenster geöffnet wird; das ist ohnehin die Standardeinstellung.


    Lass den Code aus #21 weg und nimm folgenden hinzu:

    Das öffnet für einen Moment die Web-Konsole? Genial - wieder mal ^^

    Ja, mit höheren Timouts funktioniert es :thumbup:Vielen Dank!

    (Wenn ich den Code sehe, weiß ich, warum ich es wieder aufgegeben habe, Javascript zu lernen :|. Mehr als aus anderen Skripts was zusammenzubasteln kriege ich nicht hin.)

    Gibt es einen ähnlichen Trick auch für das Tab-Kontextmenü von TreeStyleTab?

  • Die Web-Konsole sollte sich mit ausreichend hohen Timeout-Werten unsichtbar öffnen. Mit TreeStyleTab ist sie bei mir aber dennoch oft zu sehen, was nicht sein dürfte. Wenn es egal ist, ob die Web-Konsole zu sehen ist oder nicht, lässt sich der Code vereinfachen. Die Zeilen 3 - 8 und 15 - 17 können dann weggelassen werden.

    Wenn ich den Code sehe, weiß ich, warum ich es wieder aufgegeben habe, Javascript zu lernen :| . Mehr als aus anderen Skripts was zusammenzubasteln kriege ich nicht hin.

    Das wird schon. Man kommt auch mit kleinen Schritten weiter. :)

    Für das Tab-Kontextmenü von TreeStyleTab habe ich noch nichts gefunden.

    Einmal editiert, zuletzt von aborix (10. Februar 2020 um 23:10)

  • Die Web-Konsole sollte sich mit ausreichend hohen Timeout-Werten unsichtbar öffnen. Mit TreeStyleTab ist sie bei mir aber dennoch oft zu sehen, was nicht sein dürfte. Wenn es egal ist, ob die Web-Konsole zu sehen ist oder nicht, lässt sich der Code vereinfachen. Die Zeilen 3 - 8 und 15 - 17 können dann weggelassen werden.

    Verstehe, danke. Habe ich mal auskommentiert, weil, wie du schon schreibst, die Konsole hier immer kurz angezeigt wird.

    Das wird schon. Man kommt auch mit kleinen Schritten weiter. :)

    Danke für die gute Zusprache ;)

    Für das Tab-Kontextmenü von TreeStyleTab habe ich noch nichts gefunden.

    Mit dem Warten und Hoffen habe ich bei dir ja nur gute Erfahrungen gemacht :D

  • Ein anderer Code, damit bleibt die Web-Konsole auch mit TreeStyleTab unsichtbar:

  • Ein anderer Code, damit bleibt die Web-Konsole auch mit TreeStyleTab unsichtbar:

    Super! Danke!

    Damit es hier funktioniert, musste ich

    - den Timeout-Wert von dem anderen Skript (Hinzufügen der CSS-class) höher setzten, damit dieses Skript vorher läuft.

    - den Timeout-Wert in Zeile 17 höher setzen, denn im Web-Entwickler-Menü blieb "Werkzeuge ein-/ausblenden" aktiviert, ohne dass die Werkzeuge angezeigt wurden. Wenn ich sie anzeigen lassen wollte, muss ich sie zweimal anklicken bzw. den Shortcut ausführen.

  • Wahrscheinlich reicht in der letzten Zeile auch weniger als 1000 und dann können die anderen Werte vielleicht auch niedriger sein.

    Danke für den Tipp. Im Moment läuft's super. Freut mich richtig. :) Ich habe den FF mit Addons ziemlich vollgepackt, da braucht er 'ne Weile zum Starten und bis dahin sind auch die Skripte gelaufen. Also bis auf das Kontextmenü von TreeStyleTab alles perfekt. :thumbup:

  • Das hat mich außerdem auf die Idee gebracht, dass überall, wo in Menüs Einträge den Typ "checkbox" haben, ich die Symbole mit diesem Code anzeigen lassen kann. Ich habe nur das Symbol genommen, wenn nicht ausgewählt, so sehe ich, wenn es sich um diesen Typ handelt und nicht etwa ein Symbol fehlt.

    Und dein Code erspart in anderen Menüs die ganzen :hover-Einträge, echt super. :thumbup: Habe ich auch an anderen Stellen verwendet.

    CSS
    menuitem[checked="false"]::before {
    content: '';
    display: block;
    width: 16px;
    height: 16px;
    background: url('../../../../../icons/Bild63.png') no-repeat !important;
    margin: 0 -18px 0 2px;}

    Einmal editiert, zuletzt von bege (12. Februar 2020 um 22:39)