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

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 3. August 2023 um 09:42
    Zitat von FuchsFan
    Zitat von Mira_Belle

    Da rattert dann die ganze Nacht das Hirn und man kommt einfach nicht zur Ruhe.

    Kenne ich, aber dann unbedingt lernen, dass man auch abschalten kann. :sleeping:

    Wie? Welche Methode nutzt Du?

    Antwort bitte per PN, wollen doch nicht den ganzen Thread schrotten.

    Zitat von FuchsFan
    Zitat von Mira_Belle

    Und wenn es geht auch mit Nightly's?

    Es funktioniert. :thumbup:

    Danke für die Rückmeldung.

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 3. August 2023 um 07:45

    So Freunde der Nacht,

    ich habe nun einen gangbaren Weg gefunden,

    um meine favorisierte Methode des Profilpfades weiterhin verwenden zu können!

    Zugegeben, völlig unorthodox,

    aber wie so oft hat mich Horstmann darauf gebracht!

    Er schrieb:

    Zitat von Horstmann
    ...

    Alternativ, könnte es mehr Sinn machen Icons einfach mit CSS einzubetten?

    Mach ich bei den meisten meiner Scripts so.

    Wenn man sich die Button ID aus dem Script nimmt, sollte das doch eigentlich generell klappen, ohne das Theater mit den Dateipfaden im Script?

    zB:

    CSS
    #profileschange-button {
        list-style-image: url("icons/profileschange-button.png") !important;
    }

    Und so kam mir noch eine Idee!

    Denn das kuriose war/ist der Umstand, dass in meiner Symbole.us.js

    ja genau diese Variable: let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));

    genutzt wird, aber eben auch sonst nur CSS-Code.

    Und hier nun meine Lösung.

    JavaScript
    (function() {
        if (location.href !== 'chrome://browser/content/browser.xhtml') return;
        try {
           CustomizableUI.createWidget({
              id: 'profileschange-button',
              type: 'custom',
              defaultArea: CustomizableUI.AREA_NAVBAR,
              onBuild: function(aDocument) {        
                 let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
                 toolbaritem.onclick = event => onClick(event);
                 var props = {
                    id: 'profileschange-button',
                    class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                    removable: 'true',
                    label: 'Profil zusätzlich starten',
                    accesskey: '', // Wer möchte kann hier z.B. 'C' eintragen, dann kann per "Alt + C" das Skript ausgeführt werden
                    tooltiptext: 'Profile Changer',
                 };            
                 for (var p in props)
                    toolbaritem.setAttribute(p, props[p]);            
                 return toolbaritem;
              }    
           });
        } catch(e) { };
       
        let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons')); // Pfad zum Profilordner
        let ButtonIcon = "user-group_2.svg";   // Name & Dateiendung des anzuzeigenden Symbols. Hier "XXX.xxx" das eigene Symbol inkl. Dateiendung eintragen
        var css =`
            #profileschange-button { list-style-image: url("${ProfilePath}/${ButtonIcon}"); }
        `;
        var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
        var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css));
        sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
        function onClick(event) {
           if (event.button != 0){
              return;
           }
           let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
           let arguments = ["-no-remote", "-P", "Standard-Benutzer", "-foreground"]; // Profil wird ausgewählt Hier "XXX" den gewünschten Profilnamen eintragen
     //      let arguments = ["-no-remote", "-P"]; // Wer lieber den Profilmanager aufrufen möchte,nutzt diese Zeile!
           file.initWithPath("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); // Pfad zur Firefox-Installation
     //      file.initWithPath("/Applications/Firefox.app/Contents/MacOS/firefox"); // Pfad zur Firefox-Installation, Dateipfad für Mac User
           let process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
           process.init(file);    
           process.run(false, arguments, arguments.length); // Profil wird bestätigt
        }    
     })();
    Alles anzeigen

    Hätte ich schon einmal erwähnt, dass ich so hin und wieder an Schlafstörungen leide?

    Da rattert dann die ganze Nacht das Hirn und man kommt einfach nicht zur Ruhe.

    Aber fein ist es, wenn man dann seine Gedanken doch irgendwie fokussieren kann,

    und nicht wie so oft einfach es nur so um irgendwelchen Käse, für den es doch keine Lösungen gibt,

    oder weil es eine Sache aus der Vergangenheit ist, die eh nicht mehr zu ändern ist.

    Aber zurück zum Thema.

    Könnt Ihr das mal testen?

    Und wenn es geht auch mit Nightly's?

  • Fehlermeldungen und Warnungen in der Konsole

    • Mira_Belle
    • 3. August 2023 um 00:22
    Zitat von milupo
    Zitat von Mira_Belle

    Nur das rechts bringt mich nicht weiter!

    Das ist das Skript, das diese Meldung auswirft.

    Nein, das ist der Name der Moduldatei. ...

    Äh, der Aufruf der Services.jsm war aber in einer ganz anderen Datei!

    In einem JavaScript mit Namen Fenster_schließen.us.js

    Hier Zeile 32

    JavaScript
      ...
      tabContextMenu.insertBefore(cs_separator, cs_Tab_schließen);
    
      Components.utils.import("resource://gre/modules/Services.jsm");
      let ss =  Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
      let custom_label = {
      ...

    Aber wie ich schon schrieb, Zeile entschärft :!:

  • Fehlermeldungen und Warnungen in der Konsole

    • Mira_Belle
    • 2. August 2023 um 23:52

    Neuer Versuch!

    Nur das rechts bringt mich nicht weiter!

    Das ist das Skript, das diese Meldung auswirft.


    Habe meine Skripte durchsucht und den Übeltäter gefunden!

    Entsprechende Zeile stillgelegt, Skript funktioniert dennoch.

    Das wäre also erledigt!

  • Fehlermeldungen und Warnungen in der Konsole

    • Mira_Belle
    • 2. August 2023 um 23:30

    Ich habe folgende Fehlermeldungen und Warnungen in der Konsole.

    Was haben sie zu bedeuten?

    Sind sie schlimm?

    Kann man das beheben?

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 2. August 2023 um 21:39
    Zitat von Horstmann

    Mal ganz doof gefragt - die 2te Variante ist doch schon relativ alt, soweit ich das abschätzen kann, und funktioniert anscheinend immer noch.

    Wieso braucht es die erste (neuere?) Variante überhaupt?


    Bei der ersten Variante lassen sich die Ordner chrome und den darunter liegenden Ordner icons recht einfach

    in den Dateipfad (ProfilePath) einbinden.

    Geht in der zweiten Variante nicht, zumindest ist es mir bisher noch nicht gelungen.

    Um dann doch noch die zwei Ordner einzubinden, muss man sich der Krücke + "/chrome/icons/" +

    oder eben einer weiteren Variablen bedienen.

    Ich persönlich finde nach wie vor die erste Version am elegantesten.

    Eventuell geht das auch ähnlich mit der Zweiten.

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 2. August 2023 um 19:53

    Erst einmal nur für dieses Skript!

    Nicht besonders schön, aber es funktioniert erst einmal.

    JavaScript
                let ProfilePath = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");  // Pfad zum Profilordner
                let IconPath = "/chrome/icons/"; // Hier den oder die Ordner angeben, in denen das Symbol liegt
                let buttonicon = "XXX.xxx"; // Name & Dateiendung des anzuzeigenden Symbols. Hier "XXX.xxx" das eigene Symbol inkl. Dateiendung eintragen
                let props = {
                    style: 'list-style-image: url("' + ("file:" + ProfilePath + IconPath + ButtonIcon) + '");',
                };
  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 2. August 2023 um 17:51
    Zitat von 2002Andreas

    Gerne doch. ;)

    Geht online:

    https://www.base64-image.de/

    Danke.

    Werde ich mir überlegen.

    Erst einmal soll es hier aber um diese blöde nicht mehr funktionierende Pfadangabe gehen,

    Die da wäre:

    JavaScript
    let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
    let buttonicon = "bookmark-hollow.svg";
    let props = {
        style: "list-style-image: url('" + ProfilePath + buttonicon + "');"
    };

    und die ich so habe ändern müssen:

    JavaScript
    let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
    let buttonicon = "bookmark-hollow.svg";
    let props = {
        style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) +'");',
    };

    Warum funktioniert die erste Variante nicht mehr :?:

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 2. August 2023 um 17:38
    Zitat von 2002Andreas

    PS:

    Vor Jahren hatten wir immer base64 Icons, da brauchte man das alles nicht ;)

    Wenn Du mir verraten kannst, wie und mit welchem Programm man eigene Symbole so wandeln kann,

    wäre man, ich, Ihr, das Gedröhns mit den Pfaden auf einen Schlag los! ;)

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 2. August 2023 um 17:14
    Zitat von 2002Andreas
    Zitat von Mira_Belle

    Nur bei zig CSS-Dateien i

    Nur so ein Gedanke!

    Nicht jeder user hat ja einen Ordner icons im chrome Ordner, sondern evtl. einen Ordner dafür an anderer Stelle.

    Und dann wäre der direkte Pfad eben praktischer.

    Die Idee dahinter!

    Es ist ja erst einmal egal, wie genau der Ordner, der die Symbole enthält, letzten Endes heißt,

    aber wenn man sein Profil sichert, hat man alles auf einen Schlag beisammen.

    Es steht natürlich jedem frei, seine Dateien auf dem Laufwerk so zu verteilen, wie er/sie es für richtig hält.

    So ist es ja auch bei den verwendeten Skripten, auch die müssen nicht unbedingt in einem Ordner eines Profils sein,

    macht es m.M. aber leichter.

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 2. August 2023 um 16:58
    Zitat von Horstmann
    Zitat von Mira_Belle

    Zu Deinem Vorschlag, die Symbole per CSS einzubinden.

    Kann man machen, ist eventuell, wenn man eben sonst keine oder halt nur wenige Symbole hat,

    eine ganz gute Möglichkeit.

    Nur bei zig CSS-Dateien im Fall der Fälle den Fehler zu finden, ... :/

    Und ich habe gerne alles beisammen.

    Kann man so oder so sehen - wenn Icons nur über separates CSS benutzt werden, kann - zumindest momentan - der einzige Fehler eigentlich nur ein nicht existierendes/falsch benanntes oder abgelegtes Icon sein.

    Was das gleiche Problem in der Scriptvariante wäre, aber halt mit dem zusätzlichen Dateipfadgedöns.

    Mir gefällt es auch alles in einer Datei zu haben - andererseits ändere ich auch gerne mal individuelle Icons (Farbe, Deckkraft, Position in der toolbar oder im Überhangmenü, etc.), und dann müsste ich immer in das jeweilige Script rein - das dann auch die entsprechenden Parameter mitbringen müsste.

    Vielleicht sollte ich mir einfach eine separate icons.css anlegen. :/ ;)

    Alles anzeigen

    Weist Du, ich habe eine Symbol.css, die ist ca. 750 Zeilen lang.

    Wenn ich da jetzt auch noch die Symbole für all meine Buttons ablegen würde, ...

    Aber das darf und kann und soll jeder so halten wie er/sie möchte.

    Gerade so, wie jene Person am besten damit umgehen kann und will.

    Sören Hentzschel

    In der Konsole habe ich Fehlermeldungen, aber keine hat mit dem verwendeten Skript zu tun.

    Wie funktioniert das mit dem Log?

  • Schaltfläche um Lesezeichen Leiste ein/auszublenden ?

    • Mira_Belle
    • 2. August 2023 um 14:39
    Zitat von Horstmann

    Nur aus Neugierde - welcher Teil hatte denn nicht mehr funktioniert mit Fx 116?

    Bei allen meinen Skripten wurden die Symbole,

    die so:

    JavaScript
    let ProfilePath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));
    let buttonicon = "bookmark-hollow.svg";
    let props = {
        style: "list-style-image: url('" + ProfilePath + buttonicon + "');"
    };

    eingebunden wurden nicht mehr angezeigt.

    Daher musste ich das anpassen:

    JavaScript
    let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
    let buttonicon = "bookmark-hollow.svg";
    let props = {
        style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) +'");',
    };
  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 2. August 2023 um 14:31
    Zitat von Horstmann
    Zitat von Mira_Belle

    Update

    Version 1.05 vom 27. Juli zeigt kein Symbol mehr an.

    Daher das Skript aktualisiert.

    Wäre interessant zu erfahren, was generell die aktuell funktionierende Variante für Dateipfade/Iconeinbindung in Scripts ist, bzw. was nicht mehr geht und warum. :/

    Ist aber vielleicht ein eigenes Thema, oder zu aufwendig zu erklären.

    Alternativ, könnte es mehr Sinn machen Icons einfach mit CSS einzubetten?

    Mach ich bei den meisten meiner Scripts so.

    Wenn man sich die Button ID aus dem Script nimmt, sollte das doch eigentlich generell klappen, ohne das Theater mit den Dateipfaden im Script?

    zB:

    CSS
    #profileschange-button {
        list-style-image: url("icons/profileschange-button.png") !important;
    }
    Alles anzeigen

    Zur Erklärung!

    Die Parameter von PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'icons'));

    funktionieren so nicht mehr, warum auch immer.

    Das kann uns Sören Hentzschel vielleicht erkären.

    Daraus folgt, dass auch style: "list-style-image: url('" + ProfilePath + buttonicon + "');"

    das Icon (Symbol) nicht mehr einbindet.

    Also habe ich den Pfad anders eingebunden,

    Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");,

    und dem entsprechend auch

    style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) +'");',

    Zu Deinem Vorschlag, die Symbole per CSS einzubinden.

    Kann man machen, ist eventuell, wenn man eben sonst keine oder halt nur wenige Symbole hat,

    eine ganz gute Möglichkeit.

    Nur bei zig CSS-Dateien im Fall der Fälle den Fehler zu finden, ... :/

    Und ich habe gerne alles beisammen.

  • Button um weiteres Profil zu öffnen

    • Mira_Belle
    • 2. August 2023 um 12:46

    Update

    Version 1.05 vom 27. Juli zeigt kein Symbol mehr an.

    Daher das Skript aktualisiert.

    JavaScript
    // JavaScript Document
    // QuickProfilesChangesButton.uc.js
    // Source file https://www.camp-firefox.de/forum/thema/136664/?postID=1231647#post1231647
    // Source file https://www.camp-firefox.de/forum/thema/136664/?postID=1232104#post1232104
    // Version 1.06 from August 2, 2023
    (function() {
       if (location.href !== 'chrome://browser/content/browser.xhtml') return;
       try {
          CustomizableUI.createWidget({
             id: 'profileschange-button',
             type: 'custom',
             defaultArea: CustomizableUI.AREA_NAVBAR,
             onBuild: function(aDocument) {        
                let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
                let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");  // Pfadangabe zum Profilordner
                let buttonIcon = "user-group_2.svg";  // Name & Dateiendung des anzuzeigenden Symbols. Hier "XXX.xxx" das eigene Symbol inkl. Dateiendung eintragen
                toolbaritem.onclick = event => onClick(event);
                var props = {
                   id: 'profileschange-button',
                   class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                   removable: 'true',
                   label: 'Profil zusätzlich starten',
                   accesskey: '', // Wer möchte kann hier z.B. 'C' eintragen, dann kann per "Alt + C" das Skript ausgeführt werden
                   tooltiptext: 'Profile Changer',
                   style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonIcon) +'");',
                };            
                for (var p in props)
                   toolbaritem.setAttribute(p, props[p]);            
                return toolbaritem;
             }    
          });
       } catch(e) { };
     
       function onClick(event) {
          if (event.button != 0){
             return;
          }
          let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
          let arguments = ["-no-remote", "-P", "Standard-Benutzer", "-foreground"]; // Profil wird ausgewählt Hier "XXX" den gewünschten Profilnamen eintragen
    //      let arguments = ["-no-remote", "-P"]; // Wer lieber den Profilmanager aufrufen möchte,nutzt diese Zeile!
          file.initWithPath("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); // Pfad zur Firefox-Installation
    //      file.initWithPath("/Applications/Firefox.app/Contents/MacOS/firefox"); // Pfad zur Firefox-Installation, Dateipfad für Mac User
          let process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
          process.init(file);    
          process.run(false, arguments, arguments.length); // Profil wird bestätigt
       }    
    })();
    Alles anzeigen
  • Schaltfläche um Lesezeichen Leiste ein/auszublenden ?

    • Mira_Belle
    • 2. August 2023 um 12:31

    Update

    Da mein Skript unter Version 116 nicht mehr funktioniert,

    habe ich es umgeschrieben.

    JavaScript
    // Button_PersonalToolbar.uc.js
    // Source file https://www.camp-firefox.de/forum/thema/134920/?postID=1213680#post1213680
    // Source file https://www.camp-firefox.de/forum/thema/134920/?postID=1215809#post1215809
    // Source file https://www.camp-firefox.de/forum/thema/134920/?postID=1232103#post1232103
    // PersonalToolbar_ausblenden
    // basierend auf den Ideen von BrokenHeart und visoer, Verbesserungen von Horstmann, Korrekturen von Sören und Anpassungen von Mira_Belle
    (function ptbut() {              
        if (location.href !== 'chrome://browser/content/browser.xhtml') return;
           
        let startHeight = '0px';                // '24px' oder '0px' Der Startzustand wird definiert: '24px' startet mit sichtbarer Leiste
        let collapse = '0px';                   // Leiste nicht sichtbar
        let visible = '24px';                   // Leiste sichtbar
        let autoCloseTime = 5000;               // 0 = kein Auto-Close / >0 Zeit in Millisekunden /5000 => 5sec  
        let intervalID = 0;
        let persToolbar = document.getElementById('PersonalToolbar');
        try {
            CustomizableUI.createWidget({
                id: 'PersonalToolbar-button',
                type: 'custom',
                defaultArea: CustomizableUI.AREA_NAVBAR,
                    onBuild: function(aDocument) {
                        let toolbaritem = aDocument.createXULElement('toolbarbutton');
                        let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/"); // Pfadangabe zum Profilordner
                        let buttonicon = "bookmark-hollow.svg";  // Name & Dateiendung des anzuzeigenden Symbols
                        let props = {
                            id: 'PersonalToolbar-button',
                            class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                            removable: true,
                            label: 'Toggle',
                            tooltiptext: 'Lesezeichenleiste ein-/ausblenden',
                            style: 'list-style-image: url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) +'");',
                           
                        };                  
                        for(var p in props)
                            toolbaritem.setAttribute(p, props[p]);
                        return toolbaritem;                
                    }
            });
        } catch(e) { };
        //----------BEGINN----------------------
        // Funktion zum Abfragen der Tastatur ("belauscht" Eingaben)
        // Hinweis: Tasten, die anderweitig bereits "abgefangen" werden, ergeben keinen Event
        document.addEventListener('keydown', (event) => {
            let keyName = event.key;
                if (event.altKey && keyName == 'q') {   // Funktion wird ausgeführt, wenn "Alt & q gedrückt werden
    //                onClick(event);
                    onClick(event,true);  // ----geändert----
                }
            }, false
        );
        //----------ENDE------------------------
        // Anmerkungen und beispiele am Ende des Scriptes
        document.getElementById('PersonalToolbar').style.minHeight = '0';
        document.getElementById('PersonalToolbar').style.transition = 'all 0.3s steps(6, end)';
        if( startHeight === visible || startHeight === collapse ) {
            document.getElementById('PersonalToolbar').style.height = startHeight;
        }
        else {
            document.getElementById('PersonalToolbar').style.height = visible;
        }
        document.getElementById('PersonalToolbar-button').addEventListener( "click", onClick );
    //    function onClick(aEvent) {
        function onClick(aEvent, keyEvent=false) {
            if(!keyEvent && aEvent.button != 0) {
                return;    
            }
            if (persToolbar.style.height == '') {
                    persToolbar.style.height = collapse;
            }
            else if (persToolbar.style.height == visible) {
                    persToolbar.style.height = collapse;
            }
            else if(persToolbar.style.height == collapse) {
                persToolbar.style.height = visible;
                if(!intervalID && autoCloseTime) {
                    intervalID =  aEvent.target.ownerGlobal.setInterval( autoClose, autoCloseTime );
                }
            }
        }
        function autoClose() {
            if( intervalID ) {
                if( persToolbar.style.height == visible) {
                    persToolbar.style.height = collapse;
                    clearInterval(intervalID);
                    intervalID=0;
                }
            }
        }
    })();
    // Funktion wird ausgeführt, wenn STRG + Alt + l gedrückt wird
    //  if (event.ctrlKey && event.altKey && keyName == 'l') {      
    // Funktion wird ausgeführt, wenn STRG + w gedrückt werden
        //if (event.ctrlKey && keyName == 'w') {
    // PersonalToolbar.style.setProperty('min-height', '0', 'important' );
    // PersonalToolbar.style.setProperty('transition', 'all 0.3s steps(6, end)', 'important' );
    Alles anzeigen
  • Skript für Add-ons Update - Pfad zum Icon ändern

    • Mira_Belle
    • 2. August 2023 um 12:14

    Update

    Da das Skript unter Version 116 nicht mehr funktionierte,

    musste ich es umschreiben.

    JavaScript
    // Addons-UpDate-Check.uc.js
    // Source file: https://www.camp-firefox.de/forum/thema/135803/?postID=1216977#post1216977
    // Source file: https://www.camp-firefox.de/forum/thema/135814/?postID=1217002#post1217002
    // Source file: https://www.camp-firefox.de/forum/thema/135814/?postID=1232102#post1232102
    (function() {
        if (!window.gBrowser) return;
        try {
            CustomizableUI.createWidget({
              id: 'addons-update-button',
              defaultArea: CustomizableUI.AREA_NAVBAR,
              label: 'Add-ons Update',
              tooltiptext: 'Add-ons aktualisieren',
              onCommand: onCommand,
              onCreated: function(button) {
                  let currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");  // Pfadangabe zum Profilordner
                  let buttonicon = "sync-16.svg"     // Name & Dateiendung des anzuzeigenden Symbols
                  button.style.listStyleImage = 'url("' + ("file:" + currentProfileDirectory + "/chrome/icons/" + buttonicon) +'")';
              }
          });
        } catch(e) {
          return;
        }
       
        function onCommand(event) {
          event.target.ownerGlobal.openTrustedLinkIn('about:addons', 'tab');
          addEventListener('pageshow', function onPageshow(event) {
            let document = event.target;
            if (document.URL != 'about:addons') return;
            removeEventListener('pageshow', onPageshow);
            document.querySelector('addon-page-options panel-item[action="view-recent-updates"]').click();
            document.querySelector('addon-page-options panel-item[action="check-for-updates"]').click();
            content.setTimeout(function() {
              let categories = document.getElementById('categories');
              categories.querySelector('button[viewid="addons://updates/recent"]').click();
              categories.querySelector('button[viewid="addons://updates/available"]').click();
            }, 1500);
          });
        };
      })();
    Alles anzeigen
  • DeepL

    • Mira_Belle
    • 1. August 2023 um 22:27
    Zitat von Bafire

    Edit:

    Halt, noch eine Frage:
    Kann man in dieser Erweiterung dann auch auf ein auf Deutsch übersetztes Wort klicken und bekommt dann alternative Übersetzungsvorschläge, wie das auch auf http://www.deepl.com gemacht werden kann?

    Äh, leider nein, aber die Übersetzungen sind ja auch so schon richtig gut.

    Wirst für solche Sachen nicht umhinkommen, dann doch direkt DeepL zu nutzen.

    Dazu, kannst Du dann dieses Skript nutzen.

    JavaScript
    // Translate_DeepL.uc.js
    // https://github.com/ardiman/userChrome.js/tree/master/contexttranslate
    // ex ContextTranslate.uc.js///
    // modifiziert by universum 123, Umlaute geändert by 2002Andreas
    // https://www.camp-firefox.de/forum/thema/126100/?postID=1107070#post1107070
    (function () {
    //  if (location.href !== AppConstants.BROWSER_CHROME_URL) return;
        if (location.href !== 'chrome://browser/content/browser.xhtml') return;
        let translate = function () {
            let browserMM = gBrowser.selectedBrowser.messageManager;
            browserMM.addMessageListener('getSelection', function listener(message) {
                let t = (message.data !== '');
                let e = (document.charset || document.characterSet);
                if (t) {
                    openWebLinkIn('https://www.deepl.com/translator#en/de/' + encodeURIComponent(message.data), 'tab');
                } else {
                    openWebLinkIn('https://www.deepl.com/translate?u=' + encodeURIComponent(gBrowser.currentURI.spec) + '&hl=de-DE&ie=' + e + '&sl=auto&tl=de-DE', 'tab');
                };
                browserMM.removeMessageListener('getSelection', listener, true);
            });
            browserMM.loadFrameScript('data:,sendAsyncMessage("getSelection", content.document.getSelection().toString())', true);
        }
        let menuitem = document.createXULElement('menuitem');
        menuitem.id = 'context-googletranslate';
        menuitem.setAttribute('label', '\u00dcbersetzen (DeepL)');
        //menuitem.setAttribute('tooltiptext', 'Mit DeepL \u00fcbersetzen');
        menuitem.setAttribute('oncommand', '(' + translate.toString() + ')()');
        menuitem.classList.add('menuitem-iconic');
        //Wer kein Icon möchte kann die nächsten beiden Zeilen auskommentieren/löschen
        //menuitem.style.listStyleImage = 'url("https://www.deepl.com/favicon.ico")';
        menuitem.style.listStyleImage = 'url("file:///C:/Users/Mira/AppData/Roaming/Mozilla/Firefox/Profiles/iff60u96.default-release/chrome/icons/DeepL_2.png")';
        let refItem = document.getElementById('context-inspect');
        refItem.parentNode.insertBefore(menuitem, refItem);
    })();
    Alles anzeigen

    Hier das Symbol: oder

  • DeepL

    • Mira_Belle
    • 1. August 2023 um 21:27
    Zitat von Bafire
    Zitat von Mira_Belle

    Stutzig hat mich das ganze gemacht, weil eine per Skript gemachte Erweiterung zum Übersetzen von

    Texten, die eben genau auf DeepL zugreift, ohne Probleme diesen Text übersetzen konnte.

    Welche Erweiterung meinst Du? (Vielleicht wäre das auch etwas für mich?)

    Ich habe mich geirrt!

    Es ist eine ganz normale Erweiterung :!:

    Simple Translate – Holen Sie sich diese Erweiterung für 🦊 Firefox (de)
    Laden Sie Simple Translate für Firefox herunter. Quickly translate selected or typed text on web pages. Supports Google Translate and DeepL API.
    addons.mozilla.org

    Dort kann man konfigurieren, dass anstatt der Google Translate API die DeepL API genutzt werden soll.

    Man muss sich halt nur für die DeepL API Free registrieren,

    wird aber alles ganz genau erklärt.

  • non-flexible space wie in früheren Versionen des Browsers

    • Mira_Belle
    • 1. August 2023 um 21:18
    Zitat von grisu2099

    Teste mal mit verschiedenen Werten in Zeile 147 (wenn ich das auf die Schnelle richtig gesehen habe... ;) )

    Warum auch immer, haben Änderungen im Skript nichts bewirkt, aber ....

    Ich habe mir ganz einfach eine toolbarspacer.css angelegt und in der userChrome.css eingebunden.

    CSS
      toolbarspacer {
        width: 10px!important;
      }

    Jetzt geht es.

  • non-flexible space wie in früheren Versionen des Browsers

    • Mira_Belle
    • 1. August 2023 um 16:38
    Zitat von 2002Andreas
    Zitat von lenny2

    non-flexible Space müssen der Toolbar hinzugefügt werden

    Hilft dir das Skript weiter?

    https://github.com/Aris-t2/Custom…_restorer.uc.js

    Das Skript ist genial!

    Nur kannst Du mir erklären, an welcher Stelle die Breite des "schmalen" flexiblen Leerraum festgelegt wird?

    Ich hätte den gerne etwas schmaler.

Unterstütze uns!

Jährlich (2025)

105,8 %

105,8% (687,41 von 650 EUR)

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