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. FuchsFan

Beiträge von FuchsFan

  • ExtrasConfigMenuPlus.uc.js anpassen

    • FuchsFan
    • 24. Oktober 2025 um 19:06

    Das originale Script ist hier zu finden:

    ExtrasConfigMenuPlus.uc.js (ExtrasConfigMenuPlus.uc.js) ダウンロード | firefox用スクリプトアップローダー | uploader.jp
    修正
    u6.getuploader.com

    Ich habe eine Übersetzung versucht, damit wenigstens ein kleiner Überblick vorhanden ist. Es wird in dem Script auch erklärt was beim Einsatz eines eigenen Editors zu machen ist. Das habe ich in Zeile 231 eingetragen, aber beim Aufruf einer Datei (z.B. user,js) passiert nichts. Was habe ich nicht beachtet, bitte helfen?

    JavaScript
    // ==UserScript==
    // @name                ExtrasConfigMenuPlus.uc.js
    // @include             main
    // @charset             UTF-8
    // @note                extras_config_menu.uc.js / Funktionsreduktion von +α
    // @note                Klicken Sie mit der rechten Maustaste auf die Schaltfläche, um neu zu starten, und klicken Sie mit der 
    //                      mittleren  Maustaste, um about:config zu öffnen
    // @note                Der Code zum Aktivieren/Deaktivieren des Skripts wurde von rebuild_userChrome.uc.js von alice0775 ausgeliehen.
    // @version             2.0.13 Fx143+ 
    // @version             2.0.12 Fx142+ 
    // @version             2.0.11 Fx139+ / Weitere Korrekturen Erläuterung hinzugefügt
    // @version             2.0.10 Fx136+
    // @version             2.0.9  toggle / Unterstützt das Umschalten ganzzahliger Werte zwischen 0 und 1 mit Funktionen
    // @version             2.0.8  Fx115+
    // @version             2.0.7  Entwicklungsmenü
    // @version             2.0.6  Es wurde ein Problem behoben, bei dem „Neustart“ per Rechtsklick auf die Schaltfläche nicht funktionierte.
    // @version             2.0.5  Fx72beta
    // ==/UserScript==
    
    
    /*
    ■ createME Über Funktionen
    
    createME('Menütyp', 'Anzeigeetikett', 'Ausführbare Befehle und Funktionen', 'Name zur Angabe des Symbols', 'ID'));
    
    Der Name zur Angabe des Symbols kann beliebig sein, muss aber innerhalb der setIcon-Funktion übereinstimmen.
    Sie können die Entsprechung erkennen, indem Sie sich das Standardbeispielmenü und die Funktion setIcon ansehen.
    Wenn nicht angegeben, wird das Standard-Favicon angezeigt.
    
    ■ edit & open Über Funktionen
    
    Use the 'edit' function to edit files
    Use the 'open' function to open a file or folder
    Verwenden Sie die Funktion „Umschalten“, um zwischen wahren und falschen Werten zu wechseln (das Umschalten zwischen ganzzahligen Werten von 0 und 1 wird ebenfalls unterstützt).
    
    Das erste Argument jeder Funktion gibt den Basisordner an.
      0 = chrome
      1 = profile
      2 = C:\WINDOWS
      3 = C:\Program Files  oder C:\Program Files (x86)
      4 = Beim Schreiben des vollständigen Pfads im zweiten Argument *Setzen Sie das Pfadtrennzeichen auf \\\\
     'C' = Laufwerk C
     'D' = Laufwerk D
    
    Das zweite Argument gibt den Datei- oder Ordnernamen im im ersten Argument angegebenen Basisordner an.
    Vergessen Sie nicht, es in [] und den Dateinamen (Ordner) in '' einzuschließen.
    
    ■ Beispiel für die Bearbeitung von prefs.js im Profilordner
      ECM.edit(1, ['prefs.js'])
    
    ■ Beispiel für das Öffnen des Chrome-Ordners
      ECM.open(0)
    
    ■ Beispiel für den Start von Firefox (der dritte Argumentparameter kann weggelassen werden)
      ECM.open(3, ['Mozilla Firefox', 'firefox.exe'], '-no-remote')
    
    ■ Beispiel für die Aktivierung/Deaktivierung von Javascript
      ECM.toggle('javascript.enabled')
    
    
    ■ Informationen zum Ein-/Ausschalten und Bearbeiten des Userchrome-Skripts
      Klicken Sie mit der mittleren Maustaste auf ein Skript, um es zu aktivieren oder zu deaktivieren
      Bearbeiten Sie das Skript, indem Sie mit der rechten Maustaste klicken
    
    */
    
    
    (function () {
    
      'use strict'
    
      const { Preferences } = ChromeUtils.importESModule('resource://gre/modules/Preferences.sys.mjs');
    
      window.ECM = {
    
        editor: 1,
        // 1 = Editor in view_source.editor.path festgelegt
        // Wenn Sie den vollständigen Pfad zu einem Editor angeben, wird dieser Editor verwendet. *Schließen Sie den Pfad in '' ein und ersetzen Sie \ durch \\.
    
        itemLength: null,
    
        init: function () {
          try {
            CustomizableUI.createWidget({
              id: 'ExtrasConfigMenu',
              type: 'custom',
              onBuild: function(aDocument) {
                const toolbaritem = aDocument.createXULElement('toolbarbutton');
                const attributes = {
                  id: 'ExtrasConfigMenu',
                  class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                  type: 'menu',
                  label: 'Extras Config Menu',
                  image: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACnElEQVR4Xm2RzYtbZRSHn/fr3pvJzTB3qiNM2k2pMBUGhEHaqsUqdeFGQalCobgREaFu/B/cqCtxVSjoQhBEQRBmIfWDKgNGJUPt0Nhah9JJ4iSd5E6+bu5972tAO4SS5/DjXZ1znsMrNiq1eikMQqYYJCmjxNH5+zdW777L0J5KKl9VPmnf+ut9KWkwhbheuzNcOVYOmGKc5iRO0r1ykeXCx0h7kt4fC3z5wfqbQnAJwQHa5S7jAZSRuJ0mkf81cheobhBXZa+ri1uptQjHAZoZCEC1PiPgDuwxCfwerBU7b73zXn//3usCcdt4HkZ7SGZg431U51NUCgwlO3cV/bVXhR/6p9ut+nP9QYeNn7/n8qUPZxvQ/Q6VVWHk4ZqWRvlJjpx9hcGfW2wO95N2q8m3618A2WwDt/0RplSAXsBed57eyossHl5GYdHacG3zGpADM06wjQ1UUIN+CLHPvfAxojPnKLiE+bDE1R9+5GatAmgPeGCAteQ7l5GBhGSyuROyd/gFouUyWkqEErR2mwXAAA8BRS0AgMQBjSra30ZkEeDzz9Dn4ZcvMO51SMcJcTdGChmA0ABA6cAgzyG3I8jLEBylV4fWoaeIc0V7t0Uv7pFbC+CA+28mp/8+SwXKnMVmz1O9HpE+eobMZdjcoY1GIHD/NwIdoH1fBaNguzlg88pVyoUi4vTbFI8eJxsNAIfSkrliESllH/L0v0jktNNomFGv1TFrL3Fo9QSMR3jaEEXzLC09gjaKp595No0WjyCEB4zRclICUMDxtRMce/wJ1MIi2SglXShhfI/cOjxPoZRmbq4gXzt/gVrtBrdvbiG+Wf+p/mvll1BpiVAGhCDPxuAUDotz4HKHlIJON6bRbL4hhPjcMx5mkn8BBLEUrsVZbq0AAAAASUVORK5CYII=',
                  tooltiptext: 'Extras Config Menu',
                  oncontextmenu: 'return false'
                };
                for (var a in attributes) {
                  toolbaritem.setAttribute(a, attributes[a]);
                };
                return toolbaritem;
              },
              onCreated: function(toolbaritem) {
              }
            });
          } catch (e) {};
            wait();
            ECM.init2();
          this.addPrefListener(ECM.readLaterPrefListener);
          window.addEventListener('unload', this, false);
          
          let sb = window.userChrome_js?.sb;
                if (!sb) {
                    sb = Cu.Sandbox(window, {
                        sandboxPrototype: window,
                        sameZoneAs: window,
                    });
                    Cu.evalInSandbox(`
                        Function.prototype.toSource = window.Function.prototype.toSource;
                        Object.defineProperty(Function.prototype, 'toSource', {enumerable : false})
                        Object.prototype.toSource = window.Object.prototype.toSource;
                        Object.defineProperty(Object.prototype, 'toSource', {enumerable : false})
                        Array.prototype.toSource = window.Array.prototype.toSource;
                        Object.defineProperty(Array.prototype, 'toSource', {enumerable : false})
                    `, sb);
                    
                    window.addEventListener('unload', () => {
                        setTimeout(() => {
                            Cu.nukeSandbox(sb);
                        }, 0);
                    }, { once: true });
                }
                this.sb = sb;
        },
    
        init2: function (btn) {
          var btn = $('ExtrasConfigMenu');
          if (!btn) {
            wait();
            ECM.init2();
          }
          btn.addEventListener('click', (event) => ECM.onClick(event));
          const mp = btn.appendChild(this.createME('menupopup', 0, 0, 0, 'ecm-popup'));
          mp.addEventListener('click', (event) => { event.preventDefault(); event.stopPropagation(); });
          mp.addEventListener('popupshowing', (event) => ECM.onpopup(event));
          
          
          
          /* ==================== Von hier aus eingestellt ==================== */
    
          //Menü „Werkzeuge“.
          mp.appendChild($('tools-menu'));
          //Browser-Tools
          mp.appendChild($('browserToolsMenu'));
    
    
          //Freier Browserspeicher
          mp.appendChild(this.createME('menuitem', 'Speicher löschen', () => {
            const os = Services.obs;
            const gMgr = Cc['@mozilla.org/memory-reporter-manager;1'].getService(Ci.nsIMemoryReporterManager);
            const parentWindow = Services.wm.getMostRecentWindow('navigator:browser');
            os.notifyObservers(null, 'child-gc-request', null);
            Cu.forceGC();
            os.notifyObservers(null, 'child-cc-request', null);
            parentWindow.windowUtils.cycleCollect();
            os.notifyObservers(null, 'child-mmu-request', null);
            gMgr.minimizeMemoryUsage(() => '');
          }));
    
          mp.appendChild(this.createME('menuitem', 'D: Ordner Software leeren', 'ECM.open(4, "D:\\\\Software\\\\löschen.ps1")', '', 0));
          mp.appendChild(document.createXULElement('menuseparator'));
          
          //Passwort-Manager
          mp.appendChild(this.createME('menuitem', 'Passwort-Manager', 'openTrustedLinkIn("about:logins", "tab");', 'password', 0));
          
          mp.appendChild(document.createXULElement('menuseparator'));
          mp.appendChild(this.createME('menuitem', 'Javascript On/Off', 'ECM.toggle("javascript.enabled")', 'pref', 0));
          mp.appendChild(this.createME('menuitem', 'Standortintelligenz On/Off', 'ECM.toggle("geo.enabled")', 'pref', 0));
          mp.appendChild(this.createME('menuitem', 'Geben Sie den auf der Webseite angegebenen Schriftarten Vorrang', 'ECM.toggle("browser.display.use_document_fonts")', 'pref', 0));
    
          mp.appendChild(document.createXULElement('menuseparator'));
          mp.appendChild(this.createME('menuitem', 'userChrome.css', 'ECM.edit(0, ["userChrome.css"])', 'edit', 0));
          mp.appendChild(this.createME('menuitem', 'userContent.css', 'ECM.edit(0, ["userContent.css"])', 'edit', 0));
          
          mp.appendChild(document.createXULElement('menuseparator'));
          mp.appendChild(this.createME('menuitem', 'prefs.js', 'ECM.edit(1, ["prefs.js"])', 'js', 0));
          mp.appendChild(this.createME('menuitem', 'user.js', 'ECM.edit(1, ["user.js"])', 'js', 0));
          mp.appendChild(this.createME('menuitem', '_keychanger.js', 'ECM.edit(0, ["_keychanger.js"])', 'edit', 0));
          
          mp.appendChild(document.createXULElement('menuseparator'));
          mp.appendChild(this.createME('menuitem', 'Ordner chrome', 'ECM.open(0)', 'folder', 0));
          mp.appendChild(this.createME('menuitem', 'Profilordner', 'ECM.open(1)', 'folder', 0));
    
          mp.appendChild(this.createME('menuitem', 'Ordner Scripte', 'ECM.open(0, ["Scripte"])', 'folder', 0));
          mp.appendChild(this.createME('menuitem', 'Ordner CSS', 'ECM.open(0, ["CSS"])', 'folder', 0));
          //mp.appendChild(this.createME('menuitem', 'UserScriptLoader', 'ECM.open(0, ["UserScriptLoader"])', 'folder', 0));
          mp.appendChild(this.createME('menuitem', 'Installationsordner', 'ECM.open(3, ["Mozilla Firefox"])', 'folder', 0));
    
          mp.appendChild(document.createXULElement('menuseparator'));
          mp.appendChild(this.createME('menuitem', 'Firefox Update-Bestätigung', 'openAboutDialog();', 'info', 0));
    
          /* ==================== Bisherige Einstellungen ==================== */
    
    
          this.itemLength = mp.childNodes.length;
        },
    
        handleEvent: function (event) {
          if (event.type === 'unload') {
            window.removeEventListener('unload', this, false);
            this.removePrefListener(ECM.readLaterPrefListener);
            this.itemLength = null;
          }
        },
    
        onClick: function (event) {
          if (event.button === 1) {
            gBrowser.selectedTab = gBrowser.addTrustedTab('about:config');
          } else if (event.button === 2) {
            event.preventDefault();
            Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit);
          } else {
            return;
          }
        },
    
        edit: function (key, pathArray) {
          const path = this.getPath(key, pathArray);
          if (this.editor === 1) {
    		//this.launch(Services.prefs.getCharPref('view_source.editor.path'), path);
            this.launch(Services.prefs.getCharPref('C:\\notepad++\\notepad++.exe'), path);
    		} else {
            this.launch(this.editor, path);
          }
        },
    
        open: function (key, pathArray, arg) {
          const path = this.getPath(key, pathArray);
          this.launch(path, arg);
        },
    
        launch: function (path, arg) {
          arg = [arg] || [];
    
          const file = new FileUtils.File(path);
          if (!file.exists()) {
            return;
          }
    
          if (!file.isDirectory()) {
            const process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
            process.init(file);
            process.run(false, arg, arg.length);
          } else {
            file.reveal();
          }
        },
    
        getDir: function (key, pathArray) {
          let dir;
          if (key.indexOf('\\') !== -1) {
            dir = new FileUtils.File(key);
          } else {
            dir = Services.dirsvc.get(key, Ci.nsIFile);
          }
          if (pathArray != null) {
            for (let i = 0, len = pathArray.length; i < len; ++i) {
              dir.append(pathArray[i]);
            }
          }
          return dir.path;
        },
    
        getPath: function (key, pathArray) {
          pathArray = pathArray || [];
          let path = '';
          switch (key) {
          case 0:
            path = this.getDir('UChrm', pathArray);
            break;
          case 1:
            path = this.getDir('ProfD', pathArray);
            break;
          case 2:
            path = this.getDir('WinD', pathArray);
            break;
          case 3:
            path = this.getDir('ProgF', pathArray);
            break;
          case 4:
            path = pathArray;
            break;
          case 'C':
            path = this.getDir('C:\\', pathArray);
            break;
          case 'D':
            path = this.getDir('D:\\', pathArray);
            break;
          }
          return path;
        },
    
        toggle: function (prefName) {
          var pref = Preferences.get(prefName);
          var prefType = Services.prefs.getPrefType(prefName);
          if (prefType === Ci.nsIPrefBranch.PREF_BOOL) {
            Preferences.set(prefName, !pref);
          } else if (prefType === Ci.nsIPrefBranch.PREF_INT) {
            Preferences.set(prefName, (pref == 1) ? 0 : 1);
          }
        },
    
        onpopup: function (event) {
          var mp = event.target;
          if (mp !== event.currentTarget) {
            return;
          }
          for (let i = this.itemLength, len = mp.childNodes.length; i < len; i++) {
            mp.removeChild(mp.lastChild);
          }
    
          var sep = document.createXULElement('menuseparator');
          mp.appendChild(sep);
    
          for (let j = 0, lenj = userChrome_js.arrSubdir.length; j < lenj; j++) {
            var dirName = (userChrome_js.arrSubdir[j] == '') ? 'root' : userChrome_js.arrSubdir[j];
            var flg = false;
            for (var i = 0, len = userChrome_js.scripts.length; i < len; i++) {
              var script = userChrome_js.scripts[i];
              if (script.dir !== dirName) continue;
              flg = true;
              break;
            }
    
            if (!flg) continue;
    
            var menu = mp.appendChild(document.createXULElement('menu'));
            menu.setAttribute('label', 'chrome/' + (dirName == 'root' ? '' : dirName));
            menu.dirName = dirName;
    
            var mp = menu.appendChild(document.createXULElement('menupopup'));
    //        mp.addEventListener('click', event => {event.stopPropagation();});
    
            var flg = false;
            for (let i = 0, len = userChrome_js.scripts.length; i < len; i++) {
              var script = userChrome_js.scripts[i];
              if (script.dir != dirName) continue;
              flg = true;
              var mi = mp.appendChild(document.createXULElement('menuitem'));
              mi.setAttribute('label', script.filename.replace(/\.uc\.js$|\.uc\.xul$/g, ''));
              mi.setAttribute('closemenu', 'none');
              mi.setAttribute('type', 'checkbox');
              mi.setAttribute('autocheck','false');
              mi.setAttribute('checked', !userChrome_js.scriptDisable[script.filename]);
              if (script.description) {
                mi.setAttribute('tooltiptext', script.description);
              }
              mi.script = script;
              mi.addEventListener('command', () => ECM.chgScriptStat(this.script.filename));
              mi.addEventListener('click', (event) => ECM.clickScriptMenu(event));
              mi.addEventListener('mouseup', (event) => {if (event.button == 1) event.preventDefault()});
            }
            mp = event.target;
          }
        },
    
        clickScriptMenu: function (event) {
          var target = event.target;
          var script = target.script;
          var fileURL = Services.io.getProtocolHandler('file').QueryInterface(Ci.nsIFileProtocolHandler).getFileFromURLSpec(script.url);
          if (event.button === 1) {
            event.stopPropagation();
            event.preventDefault();
            ECM.chgScriptStat(script.filename);
            target.setAttribute('checked', !userChrome_js.scriptDisable[script.filename]);
          } else if (event.button === 2) {
            event.stopPropagation();
            event.preventDefault();
            this.edit(4, fileURL.path);
          } else { return; }
        },
    
        chgScriptStat: function (afilename) {
          var s = ECM.getPref('userChrome.disable.script', 'str', '');
          if (!userChrome_js.scriptDisable[afilename]) {
            s = (s + ',').replace(afilename + ',', '') + afilename + ',';
          } else {
            s = (s + ',').replace(afilename + ',', '');
          }
          s = s.replace(/,,/g, ',').replace(/^,/, '');
          ECM.setPref('userChrome.disable.script', 'str', s);
          userChrome_js.scriptDisable = this.restoreState(s.split(','));
        },
    
        restoreState: function (arr) {
          var disable = [];
          for (var i = 0, len = arr.length; i < len; i++) {
            disable[arr[i]] = true;
          }
          return disable;
        },
    
        getPref: function(aPrefString, aPrefType, aDefault){
          var xpPref = Services.prefs;
          try {
            switch (aPrefType){
              case 'complex':
                return xpPref.getComplexValue(aPrefString, Ci.nsIFile); break;
              case 'str':
                return unescape(xpPref.getCharPref(aPrefString).toString()); break;
              case 'int':
                return xpPref.getIntPref(aPrefString); break;
              case 'bool':
              default:
                return xpPref.getBoolPref(aPrefString); break;
            }
            } catch(e) {}
          return aDefault;
        },
    
        setPref: function(aPrefString, aPrefType, aValue){
          var xpPref = Services.prefs;
          try {
            switch (aPrefType){
              case 'complex':
                return xpPref.setComplexValue(aPrefString, Components.interfaces.nsIFile, aValue); break;
              case 'str':
                return xpPref.setCharPref(aPrefString, escape(aValue)); break;
              case 'int':
                aValue = parseInt(aValue);
                return xpPref.setIntPref(aPrefString, aValue);  break;
              case 'bool':
              default:
                return xpPref.setBoolPref(aPrefString, aValue); break;
            }
            } catch(e) {}
          return null;
        },
    
        addPrefListener: function (aObserver) {
          try {
            let pbi = Services.prefs;
              pbi.addObserver(aObserver.domain, aObserver, false);
          } catch(e) {}
        },
    
        removePrefListener: function (aObserver) {
          try {
              let pbi =  Services.prefs;
              pbi.removeObserver(aObserver.domain, aObserver);
          } catch(e) {}
        },
    
        readLaterPrefListener: {
          domain: 'userChrome.disable',
          observe: function (aSubject, aTopic, aPrefstring) {
            if (aTopic === 'nsPref:changed') {
              setTimeout(() => {
                let s = ECM.getPref('userChrome.disable.script', 'str', s);
                userChrome_js.scriptDisable = ECM.restoreState(s.split(','));
              }, 0);
            }
          }
        },
    
        setIcon: function(type) {
            let icon = '';
            switch (type) {
                case 'edit':
                    icon = 'chrome://global/skin/icons/edit.svg';
                    break;
                case 'folder':
                    icon = 'chrome://global/skin/icons/folder.svg';
                    break;
                case 'password':
                    icon = 'chrome://browser/skin/login.svg';
                    break;t
                case 'pref':
                    icon = 'chrome://global/skin/icons/settings.svg';
                    break;
                case 'info':
                    icon = 'chrome://global/skin/icons/info.svg';
                    break;
                case 'js':
                    icon = 'moz-icon://.js?size=16';
                    break;
                case 'bat':
                    icon = 'moz-icon://.bat?size=16';
                    break;
                case 'vbs':
                    icon = 'moz-icon://.vbs?size=16';
                    break;
                default:
                    icon = 'chrome://global/skin/icons/defaultFavicon.svg';
                    break;
           }
           return icon;
        },
        
        
        createME: function(sTyp, sLabel, sCommand, sImage, sId) {
            const ele = document.createXULElement(sTyp);
            switch (sTyp) {
                case 'menuitem':
                    ele.setAttribute('label', sLabel);
                    ele.setAttribute('class', 'menuitem-iconic');
                    ele.setAttribute('image', encodeURI(this.setIcon(sImage)));
                    const func = typeof sCommand === 'string' ? (() => {
                        if (sCommand.trim().startsWith('function')) {
                            return '(' + sCommand + ').call(this, event)';
                        }
                        return sCommand;
                    })() : '(' + sCommand.toString() + ').call(this, event)';
                    ele.addEventListener('command', (event) => { Cu.evalInSandbox(func, ECM.sb); }, false);
    //                if (sClass) ele.classList.add(sClass);
                    break;
                case 'menu':
                    ele.setAttribute('label', sLabel);
                    ele.setAttribute('id', sId);
                    break;
                case 'menupopup':
                    ele.setAttribute('id', sId);
                    break;
            }
            return ele;
        }
    
      };
    window.ECM.init();
    
      function $(id) {
        let ele = {};
        if (ele[id] == null) {
          ele[id] = document.getElementById(id);
        }
        return ele[id];
      }
    
      function wait() {
        let start = new Date();
        new Date() - start < 1000;
      }
      
    }());
    Alles anzeigen
  • Eigene Zusatzleisten ab ff 143+

    • FuchsFan
    • 17. Oktober 2025 um 21:59
    Zitat von Horstmann

    Version 10/ Fix:

    :thumbup::)

  • Eigene Zusatzleisten ab ff 143+

    • FuchsFan
    • 17. Oktober 2025 um 12:05

    Horstmann

    Nur als Hinweis, stelle ich in Zeile 72 auf true, so bleibt beim Ausblenden die Leiste wieder sichtbar (Thema hatten wir schon).

  • Eigene Zusatzleisten ab ff 143+

    • FuchsFan
    • 12. Oktober 2025 um 21:58
    Zitat von Horstmann

    Das Problem ist, der Hintergrund wird bei diesem Theme gekachelt,

    Stimmt, das habe ich mal mit unterschiedlichen Themes getestet, sind immer einige dabei. Den Code werde ich mal probieren, obwohl es für mich uninteressant ist, weil die Themes, die ich nutze (sind nur ganz wenige), keine Probleme bereiten.

    Ich bedanke mich trotzdem für deinen Einsatz in dieser Sache. :thumbup:

  • Eigene Zusatzleisten ab ff 143+

    • FuchsFan
    • 12. Oktober 2025 um 19:03
    Zitat von Horstmann

    Also besser nicht beides benutzen.

    Wird befolgt!

    Letzte Version macht mit den Themes hier keine Probleme mehr, als Beispiel Clouds (bisher schwarze Leiste), jetzt voll übernommen. Prima! :thumbup:

  • Eigene Zusatzleisten ab ff 143+

    • FuchsFan
    • 12. Oktober 2025 um 18:38
    Zitat von 2002Andreas

    Wer also immer diese Farbe nutzen will, der braucht dazu meinen obigen Code.

    2002Andreas

    Gut zu wissen, danke Andreas.:thumbup::)


    Zitat von Horstmann

    So, damit lässt sich wohl hoffentlich generell die Hintergrundfarbe oben in Zeile 49 einstellen

    Danke, werde ich auch mal testen.:thumbup::)

  • Eigene Zusatzleisten ab ff 143+

    • FuchsFan
    • 12. Oktober 2025 um 14:13
    Zitat von 2002Andreas

    Evtl. lässt sich das ja dann auch gleich ins Skript einfügen.

    Das ist ja schon im Skript eingearbeitet (ab Zeile 49), kann dann notfalls verwendet werden. Das war wohl nicht richtig formuliert von mir, gemeint hatte ich die automatische Übernahme der Farbe aus den Themes. Es funktioniert oft, aber nicht bei allen, das ist das Problem.

  • Eigene Zusatzleisten ab ff 143+

    • FuchsFan
    • 12. Oktober 2025 um 13:30
    Zitat von Horstmann

    Hoffen wir mal daß grössere Bugs ausbleiben.

    Horstmann

    Ja, das wäre natürlich zu begrüßen. Ein Thema wurde hier schon angesprochen, dass es mit einigen Themes Komplikationen gibt, und das habe ich nachträglich auch in der V7 entdeckt, dort wird dann die Leiste Schwarz eingefärbt. Kann dasabgeändert werden?

  • Eigene Zusatzleisten ab ff 143+

    • FuchsFan
    • 11. Oktober 2025 um 21:47
    Zitat von BrokenHeart

    Aber auch dein Design gefällt mir gut, sieht irgendwie freundlich aus, ohne einen mit aufdringlichen Pop-Art-Farben zu erschlagen

    Ausgerechnet von einem Spezialisten das zu lesen, da bin ich aber überrascht.:) Freut mich aber trotzdem, dass es Dir gefällt. Ich habe mir einige Themes ausgesucht, und immer die nach Möglichkeit passenden Hintergrundbilder dafür eingesetzt. Und das finde ich gut für mich, aber das kennst Du ja auch, jeder hat seinen eigenen Geschmack.

  • Eigene Zusatzleisten ab ff 143+

    • FuchsFan
    • 11. Oktober 2025 um 19:51

    Horstmann

    Hast du gut gemacht.:thumbup:

  • Eigene Zusatzleisten ab ff 143+

    • FuchsFan
    • 7. Oktober 2025 um 15:11
    Zitat von Horstmann

    Evtl. mal den gerade geposteten Code testen

    Gemacht, keine Probleme mehr erkannt, Leiste wird bei Vollbild ausgeblendet.:thumbup::)

  • Eigene Zusatzleisten ab ff 143+

    • FuchsFan
    • 7. Oktober 2025 um 13:05
    Zitat von Horstmann

    könnte jemand auf Windows

    Unter Nightly, der erste Eintrag bringt die Leiste an den unteren Rand, der zweite ohne Veränderung (Balken bleibt).

    Nachtrag: Unterer Rand passierte, weil in dem Code die letzte Klammer fehlt, Balken bleibt auch hier.

  • Eigene Zusatzleisten ab ff 143+

    • FuchsFan
    • 7. Oktober 2025 um 12:17
    Zitat von Horstmann

    und Vollbild ist OS abhängig.

    Unter Win11 mal getestet.

    Vollbild (alle Leisten ausgeblendet): .....und normale Ansicht:

  • UserCSSLoader (2025)

    • FuchsFan
    • 7. Oktober 2025 um 10:42
    Zitat von Mitleser

    ist es nicht möglich einen anderen Ordnernamen einzutragen.

    Das habe ich mit anderen Namen (Ordner sind so vorhanden) unter Win11 ausprobiert, cssweb, cssshadow, und es funktioniert auch damit.

  • Meine Version des App-Menüs (JavaScript)

    • FuchsFan
    • 5. Oktober 2025 um 20:00
    Zitat von 2002Andreas

    Dann funkt dir ein anderes Skript dazwischen

    Genau das war der Grund, nehme alles zurück, funktioniert tadellos. :thumbup:

  • Meine Version des App-Menüs (JavaScript)

    • FuchsFan
    • 5. Oktober 2025 um 19:54
    Zitat von 2002Andreas

    Ich jetzt auch mal, und hier funktioniert alles

    Das verstehe ich nicht, auch in v143 das gleiche Problem hier. Es war ja nur ein Test, mein Appmenu funktioniert dagegen tadellos.:/

  • Meine Version des App-Menüs (JavaScript)

    • FuchsFan
    • 5. Oktober 2025 um 19:41
    Zitat von Mira_Belle

    Hat doch etwas gedauert.

    Die letzte Version habe ich mal in Nightly getestet, da funktioniert hier nur das Menü "Firefox Verzeichnisse" und "about:-Seiten".

    Letzteres mit der Einschränkung, dass sich about:logins nicht aufrufen lässt, musste ich anpassen. Ja, sonst konnte ich keinen Restart ausführen, und der Fox lässt sich auch nicht beenden.

  • Meine Version des App-Menüs (JavaScript)

    • FuchsFan
    • 4. Oktober 2025 um 16:11
    Zitat von milupo

    Nur mal so als Hinweis: Wenn du mal wieder Cu. siehst und das nicht mehr funktioniert, kannst du versuchen stattdessen ChromeUtils. zu verwenden.

    milupo

    Danke für diesen Hinweis! :thumbup:

    So musste ich auch in der Beta Änderungen machen, weil es da ja auch schon Bestandteil ist.

  • Meine Version des App-Menüs (JavaScript)

    • FuchsFan
    • 4. Oktober 2025 um 14:37

    Mira_Belle / milupo

    Ich danke euch, alles wieder hübsch.:thumbup::)

  • Meine Version des App-Menüs (JavaScript)

    • FuchsFan
    • 4. Oktober 2025 um 11:28
    Zitat von Mira_Belle

    Der steht in Zeile 475 und funktioniert.

    Ich bezog mich auf das Script aus #1, aber der Code bleibt identisch. Nur komisch, hier funktioniert er nicht mehr. Auch in anderen Scripten, wie extra-config-menu.uc.js oder Script für Browser-Werkzeuge, wo der Mittelklick die Entwickler-Wekzeuge bisher geöffnet hat. Hier ist mal das Script, kannst ja bitte mal schauen, was da nicht rund läuft.

    Code
    // Button_Werkzeuge.uc.js
    // Linksklick öffnet die Browser-Werkzeuge
    // Mittelklick öffnet die Entwickler-Werkzeuge
    // Rechtsklick öffnet die Browser-Konsole
    
    (function() {
    	if (!window.gBrowser)
    		return;
         
    	try { 
    	        CustomizableUI.createWidget({
                id: 'buttonWerkzeuge',
                type: 'custom',
                defaultArea: CustomizableUI.AREAS,
                onBuild: function(aDocument) {
                   var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
                   var props = {
                        id: 'buttonWerkzeuge',
                        class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                        removable: true,
                    // Name im AnpassungFenster
                        label: 'Werkzeuge aufrufen',
                    // Name bei MausHover wenn in Symbolleiste
                        tooltiptext: 'Links Browser-Werkzeuge / Mitte Entwickler-Werkzeuge / Rechts Browser-Konsole',
                        style: 'list-style-image: url("file:///C:/FoxIcons2/werkzeuge.png")',
    			
    		       };
                   for (var p in props)
                      toolbaritem.setAttribute(p, props[p]);
    
                   return toolbaritem;
    			   
                   }
                });
            } catch(e) { };	
    
    			document.getElementById('buttonWerkzeuge').addEventListener('click', event => {
    				if (event.button == 2) {
    					let { require } = ChromeUtils.importESModule("resource://devtools/shared/loader/Loader.sys.mjs", {});
                        let { BrowserConsoleManager } = require('resource://devtools/client/webconsole/browser-console-manager');
                            BrowserConsoleManager.openBrowserConsoleOrFocus();
    				}
    				if (event.button == 0) {
    					let { require } = ChromeUtils.importESModule("resource://devtools/shared/loader/Loader.sys.mjs", {});
                        let { BrowserToolboxLauncher } = require('resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs');
                            BrowserToolboxLauncher.init();
    				}
    				if (event.button == 1) {
    					let { require } = ChromeUtils.importESModule('resource://devtools/shared/loader/Loader.sys.mjs', {});
                        let { gDevToolsBrowser } = require('devtools/client/framework/devtools-browser');
                            gDevToolsBrowser.toggleToolboxCommand(window.gBrowser, Cu.now());
    				}
    			});
    })();
    Alles anzeigen


    Nachtrag: Sorry, das Ganze natürlich im aktuellen Nightly.:rolleyes:

Unterstütze uns!

Jährlich (2025)

108,6 %

108,6% (705,72 von 650 EUR)

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