1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. Mira_Belle

Beiträge von Mira_Belle

  • Erweiterungs-Button verschwunden

    • Mira_Belle
    • 15. März 2025 um 15:14
    Zitat von Mitleser

    Danke für den Tip! Und lies bitte nochmal #49.

    Och komm, wenn Du eine Deklaration einer Variable löschst oder auskommentierst,
    ist es doch logisch, dass irgendeine Funktion, die genau auf diese zugreift, nicht mehr funktioniert.
    Dann hast Du im zweiten Versuch genau diese Funktion "gelöscht" und das Skript hat dennoch irgendetwas gemacht.
    Glück gehabt. (Dass die Verwendung des zweiten Aufrufs genau dieser Variable, das Skript nicht in den Abgrund gerissen hat)
    Genau deshalb schrieb ich, schau mal in die Konsole, es wird mit Sicherheit dort ein Fehler aufgeführt!
    Das bedeutet, dass das Skript dann eben NICHT fehlerfrei funktioniert, auch wenn es scheinbar tut, was es soll.


    Zitat von 2002Andreas
    Zitat von Mira_Belle

    der Erweiterungsbutton im privaten Modus gar nicht vorgesehen ist

    :/


    Er ist bei mir nur dadurch nicht vorhanden, weil ich ein Skript für eine neue zusätzliche Leiste verwende.

    Erst ab Fx 137 ist er wieder vorhanden.

    Sorry, kleines Missverständnis!
    Habe ich nun reproduzieren können!

  • Erweiterungs-Button verschwunden

    • Mira_Belle
    • 15. März 2025 um 15:02
    Zitat von 2002Andreas
    Zitat von Sören Hentzschel

    ist das Standardverhalten.

    Richtig.

    Hier im Thread geht es aber u.a. darum, dass der Erweiterungsbutton nicht angezeigt wird (in einen neuen/privaten Fenster), bzw. keine Funktion hat, wenn man ihn auf eine eigene andere Leiste zieht.

    Erst ab Fx 137 funktioniert das.

    Je mehr ich mich mit der Zusatzleiste und dem verschiebbaren Erweiterungsbutton beschäftige,
    desto weniger verstehe ich die Problematik!

    Normal, (136) gibt es diesen Button im privaten Modus gar nicht!
    Mit Skript zum Verschieben, ist er da, hat aber eine andere Funktion. Neuer Tab, "about:addons"
    Mit Zusatzleiste und dahin verschobenen Erweiterungsbutton, ist dieser wieder ohne Funktion.
    Nun kommt das FixSkript zum Einsatz, und der Erweiterungsbutton hat wieder eine Funktion,
    jedoch öffnet er wieder einen neuen Tab mit "about:addons"!

    Nun wage ich mal eine steile Aussage!
    Da der Erweiterungsbutton auf Firefox interne Funktionen zum Aufrufen des Popups zu greift
    und der Erweiterungsbutton im privaten Modus gar nicht vorgesehen ist,
    werden wir das auch gar nicht hinbekommen!


    Nachtrag, auch in der Nightly (138.0a1 (2025-03-15)) verhält es sich wie beschrieben.

  • Erweiterungs-Button verschwunden

    • Mira_Belle
    • 15. März 2025 um 14:48
    Zitat von Mitleser

    Die Variable wird zweimal angewand : In Zeile 24 sowie in Zeile 37.

    Dann schau mal in die Konsole, da wird mit Sicherheit ein Fehler ausgeworfen!
    Das mit der Deklaration der Variable hat schon seine Richtigkeit!
    Nutze doch einfach "Visual Studio Code". Dieser Editor zeigt Dir "echte" Fehler an
    und Du musst nicht im Dunklen herumstochern und Fehler finden, wo gar keine sind.

  • Erweiterungs-Button verschwunden

    • Mira_Belle
    • 15. März 2025 um 13:40
    Zitat von 2002Andreas
    Zitat von Mira_Belle

    nur hat diese im privaten Modus hier bei mir eine andere Funktion!

    darum geht es ja auch teilweise in diesem Thread;)

    Auch in einem neuen Fenster funktioniert es nicht.

    Ach so!
    Weil im gezeigten Clip von BrokenHeart , Beitrag #35, scheint ja alles in bester Ordnung zu sein.

    Apropos, auch im aktuellen Firefox (136.0.1) verhält sich der Button so merkwürdig
    im privaten Modus. Nicht nur in der Nightly.

  • Erweiterungs-Button verschwunden

    • Mira_Belle
    • 15. März 2025 um 13:22
    Zitat von 2002Andreas

    Es geht hier nur! um den Erweiterungsbutton;)

    Ja, nur hat diese im privaten Modus hier bei mir eine andere Funktion!
    Wahrscheinlich funkt mir da irgendein anderes Skript dazwischen.
    Werde ich aber nicht extra suchen, weil ich nur sehr selten den privaten Modus nutze.

    Und ich klinke mich hier besser mal aus, sonst sorge ich nur für Verwirrung.

  • Erweiterungs-Button verschwunden

    • Mira_Belle
    • 15. März 2025 um 13:00

    OK, jetzt hat der Button in der "Neue Leiste" eine Funktion.
    Im "normalen" Modus, wie gewünscht.
    Im "privaten" Modus öffnet sich aber ein Tab (about:addons):!:
    :/ Ich steige besser hier an der Stelle mal aus, bevor ich für noch mehr Verwirrungen sorge.
    Aber Danke.

  • Erweiterungs-Button verschwunden

    • Mira_Belle
    • 15. März 2025 um 12:33

    Mh, ich verstehe hier z.Z. nur Bahnhof, sorry.
    Das von Dir BrokenHeart gepostete Skript funktioniert hier genauso wenig wie mein eigenes.
    Jedoch schriebst Du etwas von einem FIX (FixToolbarButtons.uc.js').
    Nur wo finde ich dieses Skript?
    Hier im Board in der Suche eingegeben, habe ich es nicht gefunden.
    Ich würde gerne die Problematik nachvollziehen können.

  • Erweiterungs-Button verschwunden

    • Mira_Belle
    • 14. März 2025 um 21:25

    Ok, es kann nicht funktionieren, weil das Aufrufen des Popups eine interne Funktion ist.
    Füge ich z.B.

    JavaScript
         // Füge den Event-Listener hinzu, um das Popup auszulösen
         menuButton.addEventListener('click', function() {
          // Öffne das Popup oder führe eine gewünschte Aktion aus
          window.gBrowser.selectedTab = window.gBrowser.addTab("about:addons", {
            triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()
          });
        });

    ein, wird sehr wohl der Tab about:addons geöffnet.

    Wie man an die Funktion zum Öffnen des Popups kommt, entzieht sich leider meiner Kenntnis.
    Sonst könnte ich (man) ja das Problem lösen.

    Zum Test:

    JavaScript
    (function() {
      if (!window.gBrowser) return;
    
      /* Konfiguration */
      let origID = "unified-extensions-button"// ID des originalen Buttons
      let label = "Erweiterungen"
      let tooltiptext = label;  // auch eigener Text möglich, dieser in Anführungszeichen
      /* Ende Konfiguration */
    
      let menuButton = document.getElementById(origID)
      let buttonID = 'ucjs_' + origID;
    
      if (!CustomizableUI.getPlacementOfWidget( buttonID )) {
        try {
          CustomizableUI.createWidget({
            id: buttonID,
            type: 'custom',
            defaultArea: CustomizableUI.AREA_NAVBAR,
            onBuild: function(aDocument) {
              let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbaritem');
              toolbaritem.id = buttonID;
              toolbaritem.className = 'chromeclass-toolbar-additional';
              toolbaritem.setAttribute('label', label);
    /*
              toolbaritem.addEventListener('click', function() {
                // Hole das aktuelle gBrowser und öffne einen neuen Tab mit dem SystemPrincipal
                window.gBrowser.selectedTab = window.gBrowser.addTab("about:addons", {
                    triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()
                });
            });
    */
    
    
              return toolbaritem;
            }
          });
    
          if (!CustomizableUI.getPlacementOfWidget( buttonID )) {
            menuButton.style.display = 'none';
            return;
          };
        } catch(e) {
          menuButton.style.display = 'none';
          return;
        };
      };
    
      let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);       
      let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
    
          #unified-extensions-button.toolbarbutton-1.chromeclass-toolbar-additional image.toolbarbutton-icon {
            width: 28px !important;
            height: 28px !important;
            fill: #FF00FF !important;
            fill-opacity: 1 !important;
            }
    
         `), null, null);
    
      sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
    
      setTimeout(function() {
       document.getElementById(buttonID).appendChild(menuButton),
    
    
       menuButton.setAttribute('consumeanchor', buttonID);
       menuButton.setAttribute('label', label);
       menuButton.setAttribute('tooltiptext', tooltiptext);
    
         // Füge den Event-Listener hinzu, um das Popup auszulösen
         menuButton.addEventListener('click', function() {
          // Öffne das Popup oder führe eine gewünschte Aktion aus
          window.gBrowser.selectedTab = window.gBrowser.addTab("about:addons", {
            triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()
          });
        });
    
      }, 0);
    
    }());
    Alles anzeigen
  • Erweiterungs-Button verschwunden

    • Mira_Belle
    • 14. März 2025 um 20:36

    Ah, verstehe.
    Andere Skripte funktionieren in dieser neuen Leiste,
    nur eben jenes nicht.
    Komme leider auch nicht dahinter, woran das liegt.

  • Erweiterungs-Button verschwunden

    • Mira_Belle
    • 14. März 2025 um 19:55

    Hast Du mal dieses Skript für mich?
    Oder einen Linkt dazu?

  • Erweiterungs-Button verschwunden

    • Mira_Belle
    • 14. März 2025 um 19:38

    2002Andreas Was heißt "unten links" ?
    Ich habe den Button oben in die Menüleiste geschoben, funktioniert.
    In die Tableiste, funktioniert.
    Und in der Navbar funktioniert es sowieso.
    Auch in der PersonalToolbar funktioniert der Button.

  • Erweiterungs-Button verschwunden

    • Mira_Belle
    • 14. März 2025 um 16:18

    Verstehe ich da etwas falsch?
    Der Button für die Erweiterungen ist bei mir verschiebbar
    und er funktioniert!
    In der 136.0.1 sowie in der 138.0a1 ohne Probleme.

    JavaScript
    (function() {
      if (!window.gBrowser) return;
    
      /* Konfiguration */
      let origID = "unified-extensions-button"// ID des originalen Buttons
      let label = "Erweiterungen"
      let tooltiptext = label;  // auch eigener Text möglich, dieser in Anführungszeichen
      /* Ende Konfiguration */
    
      let menuButton = document.getElementById(origID)
      let buttonID = 'ucjs_' + origID;
    
      if (!CustomizableUI.getPlacementOfWidget( buttonID )) {
        try {
          CustomizableUI.createWidget({
            id: buttonID,
            type: 'custom',
            defaultArea: CustomizableUI.AREA_NAVBAR,
            onBuild: function(aDocument) {
              let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbaritem');
              toolbaritem.id = buttonID;
              toolbaritem.className = 'chromeclass-toolbar-additional';
              toolbaritem.setAttribute('label', label);
              return toolbaritem;
            }
          });
          if (!CustomizableUI.getPlacementOfWidget( buttonID )) {
            menuButton.style.display = 'none';
            return;
          };
        } catch(e) {
          menuButton.style.display = 'none';
          return;
        };
      };
    
      let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);       
      let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
    
          #unified-extensions-button.toolbarbutton-1.chromeclass-toolbar-additional image.toolbarbutton-icon {
            width: 28px !important;
            height: 28px !important;
            fill: #FF00FF !important;
            fill-opacity: 1 !important;
            }
    
         `), null, null);
    
      sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
    
      setTimeout(function() {
       document.getElementById(buttonID).appendChild(menuButton);
       menuButton.setAttribute('consumeanchor', buttonID);
       menuButton.setAttribute('label', label);
       menuButton.setAttribute('tooltiptext', tooltiptext);
      }, 0);
    
    }());
    Alles anzeigen
  • Der Glückwunsch-Thread

    • Mira_Belle
    • 10. März 2025 um 16:30

  • Firefox v136.0 - Skript "export_folder_to_html.uc.js" funktioniert nicht mehr

    • Mira_Belle
    • 9. März 2025 um 10:24

    Habe nun etwas Zeit damit verbracht, https://searchfox.org zu bemühen.

    So wirklich, also eigentlich gar nicht, verstehe ich das ganze nicht!

    Habe aber etwas gefunden, das, so denke ich, jeden Fall, uns weiterbringen könnte.

    JavaScript
      /**
       * Allows simple exporting of bookmarks.
       */
      exportBookmarks: function PO_exportBookmarks() {
        let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
        let fpCallback = function fpCallback_done(aResult) {
          if (aResult != Ci.nsIFilePicker.returnCancel) {
            var { BookmarkHTMLUtils } = ChromeUtils.importESModule(
              "resource://gre/modules/BookmarkHTMLUtils.sys.mjs"
            );
            BookmarkHTMLUtils.exportToFile(fp.file.path).catch(console.error);
          }
        };
    
        fp.init(
          window.browsingContext,
          PlacesUIUtils.promptLocalization.formatValueSync(
            "places-bookmarks-export"
          ),
          Ci.nsIFilePicker.modeSave
        );
        fp.appendFilters(Ci.nsIFilePicker.filterHTML);
        fp.defaultString = "bookmarks.html";
        fp.open(fpCallback);
      },
    Alles anzeigen

    Nur wie, weiß ich (noch) nicht.

  • Firefox v136.0 - Skript "export_folder_to_html.uc.js" funktioniert nicht mehr

    • Mira_Belle
    • 7. März 2025 um 19:29

    milupo Ah verstehe.
    Nur wodurch wird dann der Speichern-Dialog aufgerufen?
    Wie könnte man das mit den Browserwerkzeugen herausfinden?

  • Firefox v136.0 - Skript "export_folder_to_html.uc.js" funktioniert nicht mehr

    • Mira_Belle
    • 7. März 2025 um 18:56
    Zitat von milupo

    Das ist doch gar nicht in diesem Skript hier. :/

    Stimmt!
    Man öffne die Browserwerkzeuge und untersucht "Import and Backup"
    => https://support.mozilla.org/en-US/kb/expor…kup-or-transfer


    Wenn man dann auf event klickt bekommt man diesen Code.

  • Der Glückwunsch-Thread

    • Mira_Belle
    • 7. März 2025 um 18:00

    Oh, natürlich auch von mir alles Liebe und Gute. <3

  • Firefox v136.0 - Skript "export_folder_to_html.uc.js" funktioniert nicht mehr

    • Mira_Belle
    • 7. März 2025 um 17:58
    JavaScript
        _onClick() {
          let controlElement = this.labeledControlElement;
          if (!controlElement || this.disabled) {
            return;
          }
          controlElement.focus();
          const XUL_NS =
            "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
    
          if (controlElement.namespaceURI != XUL_NS) {
            return;
          }
    
          if (
            (controlElement.localName == "checkbox" ||
              controlElement.localName == "radio") &&
            controlElement.getAttribute("disabled") == "true"
          ) {
            return;
          }
    
          if (controlElement.localName == "checkbox") {
            controlElement.checked = !controlElement.checked;
          } else if (controlElement.localName == "radio") {
            controlElement.control.selectedItem = controlElement;
          }
        }
    Alles anzeigen

    Kann jemand etwas mit diesem Fetzen Code anfangen?

    Ich glaube, die letzten Zeilen, mit "checkbox" könnten etwas mit dem Speicherndialog zu tun haben.

  • Firefox v136.0 - Skript "export_folder_to_html.uc.js" funktioniert nicht mehr

    • Mira_Belle
    • 7. März 2025 um 09:40

    Hier das komplett überarbeitete Skript.

    JavaScript
    // export_folder_to_html.uc.js
    // Exports folder bookmarks to HTML file
    // Item "Export folder to HTML" in the context menu of the folder in “Manage Bookmarks” and Sidebar
    (async topic => {
        let imp = (m, n = m) => ChromeUtils.importESModule(`resource://gre/modules/${m}.sys.mjs`, {})[n];
        let exporter = {
            get dps() {
                delete this.dps;
                return this.dps = imp("DownloadPaths");
            },
            get exporter() {
                delete this.exporter;
                return this.exporter = imp("BookmarkHTMLUtils", "BookmarkExporter");
            },
            async export(popup) {
                let win = popup.ownerGlobal, tn = popup.triggerNode;
                let node, pu = win.PlacesUtils, bm = pu.bookmarks;
                if (tn.nodeName == "treechildren") node = popup._view.selectedNode;
                else if (tn.id == "OtherBookmarks")
                    node = {bookmarkGuid: bm.unfiledGuid, title: tn.getAttribute("label")};
                else node = tn._placesNode || popup._view.result.root;
                let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
                fp.init(win, win.PlacesUIUtils.promptLocalization.formatValueSync("places-bookmarks-export"), fp.modeSave);
                fp.appendFilters(fp.filterHTML);
                fp.defaultString = (node.title ? this.dps.sanitize(node.title) : "untitled") + ".html";
                if (await new Promise(fp.open) == fp.returnCancel) return;
                let tree = await pu.promiseBookmarksTree(pu.getConcreteItemGuid(node), {includeItemIds: true});
                tree.title = bm.getLocalizedTitle(tree);
                let bookmarks = {children: [
                    {root: "toolbarFolder"},
                    {root: "unfiledBookmarksFolder"},
                    {root: "bookmarksMenuFolder", children: [tree], guid: bm.menuGuid}
                ]};
                new this.exporter(bookmarks).exportToFile(fp.file.path);
            },
            observe(doc) {
                let popup = doc.querySelector("menupopup#placesContext");
                if (!popup) return;
                let menuitem = (doc.createXULElement || doc.createElement).call(doc, "menuitem");
                for(let args of Object.entries({
                    label: "Export folder to HTML",
                    selection: "folder",
                    "node-type": "folder",
                    "selection-type": "single|none",
                    id: "placesContext_exportFolder"				
                }))
    			
    			menuitem.setAttribute(...args);
                menuitem.exporter = this;
    
                menuitem.addEventListener('click', () => {
                    this.export(popup);  // Übergibt das Popup-Element als Parameter an die Export-Funktion
                });
    	
                doc.getElementById("placesContext_openSeparator").before(menuitem);
            }
        };
        Services.obs.addObserver(exporter, topic);
        Services.obs.addObserver(function quit(s, t) {
            Services.obs.removeObserver(quit, t);
            Services.obs.removeObserver(exporter, topic);
        }, "quit-application-granted");
    })("chrome-document-loaded");
    Alles anzeigen

    Habe noch einen kleinen Fehler in Zeile 52 beseitigt.
    Das Skript ruft aber weiterhin NICHT den Speicherdialog auf!

    Es wird folgender Fehler ausgeworfen:

    Code
    Uncaught (in promise) NS_ERROR_XPC_BAD_CONVERT_JS: Could not convert JavaScript argument arg 0 [nsIFilePicker.init]
        export file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/Testumgebung/chrome/scripts/##_1.js:25
        observe file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/Testumgebung/chrome/scripts/##_1.js:59

    Deutet darauf hin, dass der erste Parameter von fp.init() nicht den erwarteten Typ hat.
    Das bedeutet, dass win, der im aktuellen Code an fp.init(win, ...) übergeben wird, nicht den richtigen Fenstertyp darstellt.

    Der nsIFilePicker.init()-Aufruf erwartet ein nsIDOMWindow-Objekt als ersten Parameter, aber in deinem Fall ist win möglicherweise kein gültiges Fensterobjekt, was diesen Fehler verursacht.

    Was ich damit anfangen soll, ich weiß es nicht.
    Ich habe nicht die geringste Ahnung, was da geändert werden muss.

  • Firefox v136.0 - Skript "export_folder_to_html.uc.js" funktioniert nicht mehr

    • Mira_Belle
    • 7. März 2025 um 08:31
    Zitat von lenny2

    milupo  Speravir Nichts hat geholfen, der Speicherdialog erscheint nicht.
    Normalerweise ist der Algorithmus wie folgt: Wenn Sie klicken, erscheint der Standard-Speicherdialog, der Name des exportierten Ordners wird automatisch in den Dateinamen eingefügt, z. B. Android.html. Die Exportdatei wird an dem vom Benutzer gewählten Ort gespeichert.
    Wenn Sie die Exportdatei in einem Browser öffnen, sieht sie wie folgt aus

    Das haben wir uns, also ich jedenfalls, so gedacht!
    Das Problem, wir sind keine Profis und wissen nicht, wie der "neue" String zum Aufruf des Speicherdialogs
    richtig lauten muss. Es scheint so, als hätte Mozilla die API dazu geändert.
    Nur wo und wie ich da an den Code ran komme, habe ich noch nie verstanden.

    Es ist zwar möglich per Browserwerkzeuge z.B. den Eintrag "Datei / Seite speichern unter ..." zu untersuchen,
    aber wie ich an den zugrunde liegenden JavaScript-Code komme, bleibt mir ein Rätsel.

Unterstütze uns!

Jährlich (2026)

69,4 %

69,4% (538,17 von 775 EUR)

Jetzt spenden
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
Mastodon