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

Beiträge von bege

  • Webseiten mit 404 Fehler finden

    • bege
    • 3. September 2023 um 18:50
    Zitat von Sören Hentzschel

    Eine Info aus aktuellem Anlass

    Danke für die Info. Da hatte ich ja Glück, dass ich meine riesige Lesezeichensammlung vor ein paar Wochen mit der Erweiterung durchleuchtet habe.

  • Im ExtraConfigMenu.uc.js werden die Scripte nicht mehr angezeigt.

    • bege
    • 21. Juli 2023 um 21:07

    Ich war verreist und habe jetzt erst dieses Thema kurz überflogen. Ich weiß nicht, ob meine Version des Skriptes noch gebraucht wird, ich poste sie hier mal.

    Ich habe alle Skripte im Unterordner "JS" (der muss natürlich auch in der userchrome.js stehen) und die CSS-Dateien im Unterordner "CSS".

    In der Konfiguration des Skripts am Anfang kann man den Skript-Unterordner einstellen (Zeile 19) und drei CSS-Unterordner (ab Zeile 34).

    Ich nutze im Moment nur einige der möglichen Funktionen, deshalb kann ich nicht sagen, ob alle in v115 funktionieren. Also die Konfiguration genau durchgehen und ausprobieren. Ich nutze es im aktuellen Fx 115.0.2 unter Windows 10.

    JavaScript: extras_config_menu.uc.js
    // ==UserScript==
    // @name           extras_config_menu.uc.js
    // @compatibility  Firefox ab 92
    // @include        main
    // @version........1.0.20180914 Aktualisierung von aborix für Firefox 62+
    // @version        1.0.20190504 überarbeitet von bege
    // ==/UserScript==
    
    var uProfMenu = {
      // Beginn der Konfiguration
      // In der folgenden Zeile den Pfad zum Texteditor eintragen (unter Ubuntu 10.04 z.B.: '/usr/bin/gedit'). Bei Fehleintrag wird view_source.editor.path ausgelesen:
      TextOpenExe: 'C:\\Program Files\\Notepad++\\notepad++.exe',
      // Falls gewuenscht, in der Zeile nach den Beispielen einen Dateimanager eintragen (komplett leer lassen fuer Dateimanager des Systems) Beispiele:
      // vFileManager: 'E:\\Total Commander\\Totalcmd.exe',
      // vFileManager: 'C:\\Program Files (x86)\\FreeCommander\\FreeCommander.exe'
      vFileManager: 'C:\\Program Files\\FreeCommander XE\\FreeCommander.exe',
      // Falls die JavaScript-Scripte nicht im chrome-Verzeichnis, sondern einem Unterverzeichnis sind,
      // in der folgenden Zeile das Unterverzeichnis eintragen, sonst '':
      jsSubfolder: 'JS',
      // Im Folgenden bei "warmenuto" 'menu' eintragen, damit es in der Menueleiste erscheint, sonst die id des gewuenschten
      // Elements *nach* dem der Button erscheinen soll (z.B. 'urlbar', 'searchbar', 'undoclosetab-button','abp-toolbarbutton')
      // Bitte nicht so etwas wie die Menue- oder Navigationsleiste (sondern einen Menuepunkt oder einen Button mit id auf diesen Leisten) eintragen:
      warpmenuto: 'menu',
      // Für die Einstellung 'menu' wird hier der Ort festgelegt, wo das Menü angezeigt werden soll.
      // (0: in der Menueleiste, 1: im Extras-Menue)
      menuLocation: 0,
     // Unter Linux sollte/kann versucht werden, die userChromeJS-Skripte zu sortieren, unter Windows ist das evtl. nicht noetig (die Sortierung wird Gross- und Kleinschreibung *nicht* beruecksichtigen - dazu wird die sort()-Funktion entsprechend mit einer Vergleichsfunktion aufgerufen)
      sortScripts: 0,   // 1 zum Erzwingen der Sortierung
      // Einbindung GM-Skripte-Ordner (0: nein, 1: Greasemonkey [Profil-Verzeichnis], 2: UserScriptLoader [Chrome-Verzeichnis], 3: Scriptish [Profil-Verzeichnis]):
      gmOrdner: 0,
      // Einbindung CSS-Ordner (0: nein, 1: ja, Chrome-Unterordner, 2: ja, anderer Pfad):
      cssOrdner: 0,
      // Wenn cssOrdner = 1 oder 2, hier entweder Chrome-Unterordner (z.B. 'CSS') oder andere vollständige Pfade (z.B. 'C:\\Dropbox\\Chrome\\Thunderbird\\CSS-Ordner\\css-dateien') entragen, sonst '':
      cssLocation1: 'CSS',
      cssLocation2: '',
      cssLocation3: '',
      //Anzeigenamen für die CSS-Ordner
      cssLocation1Name: 'CSS-Ordner',
      cssLocation2Name: 'CSS-Ordner2',
      cssLocation3Name: 'CSS-Ordner3',
      // In einer der folgenden Zeilen gueltige about:Adressen eintragen, die ebenfalls aufgerufen werden sollen.
      // - Zum Ausblenden: abouts: [],
      // - Damit die about:-Seiten nicht als Untermenue, sondern direkt als Menuepunkte aufgefuehrt werden, muss das erste Element '0' sein:
      // abouts: ['0','about:config','about:about','about:cache','about:certificate','about:checkerboard','about:crashes','about:debugging','about:devtools','about:memory','about:networking','about:performance','about:policies','about:profiles','about:serviceworkers','about:support','about:telemetry','about:url-classifier','about:webrtc'],
      // abouts: ['about:config','about:about','about:cache','about:certificate','about:checkerboard','about:crashes','about:debugging','about:devtools','about:memory','about:networking','about:performance','about:policies','about:profiles','about:serviceworkers','about:support','about:telemetry','about:url-classifier','about:webrtc'],
       abouts: [],
      // Einbindung config-Dateien wie user.js etc. (0: nein, 1: ja)
       configFiles: 0,
      // Die Firefox-Ordner anzeigen (0: nein, 1: ja):
       firefoxOrdner: 0,
      // Die normalen Firefox-Einstellungen auch zur Verfuegung stellen (0: nein, 1: ja):
      showNormalPrefs: 0,
      // Stellt "Skriptliste in Zwischenablage" zur Verfuegung (1: ja, 2: mit getrennter Nummerierung, 3: mit gemeinsamer Nummerierung) oder nicht (0):
      enableScriptsToClip: 1,
      // Den Eintrag "Neustart" anzeigen (0: nein, 1: ja):
      enableRestart: 0,
      // Ende der Konfiguration
    
      init: function() {
        if (this.warpmenuto.toLowerCase() == 'menu') {
          // aufgrund des gewaehlten warpmenuto als Menue anlegen
          if (this.menuLocation) {
          var zielmenu = document.getElementById('appMenu-toolsView');
          } else {
             var zielmenu = document.getElementById('main-menubar');
          }
        
          if (zielmenu==null) {
            userChrome.log("extras_config_menu.uc.js findet Zielmenue nicht, evtl. weil ein anderes Fenster als das Hauptfenster " +
                           "geoeffnet wurde. Falls dieser Fehler auch im Hauptfenster auftritt, bitte die vorgehende Definition " +
                           "von 'zielmenu' kontrollieren.");
            return;
          }
          var menu = zielmenu.appendChild(this.createME("menu","Config-Menü",0,0,"ExtraConfigMenu"));
          menu.setAttribute("class","menu-iconic");
          menu.setAttribute("ondblclick","openTrustedLinkIn('about:config', 'tab');");
          menu.setAttribute("tooltiptext","Doppelklick öffnet about:config");
         } else {
          // als Button nach dem per warpmenuto gewaehlten Element anlegen (s. Kommentar ueber warpmenuto im Konfigurationsabschnitt)
          var zielmenu = document.getElementById(this.warpmenuto);
          if (zielmenu==null) {
            userChrome.log("extras_config_menu.uc.js findet Zielpunkt '"+this.warpmenuto+"' nicht, evtl. weil ein anderes Fenster als das Hauptfenster " +
                           "geoeffnet wurde. Falls dieser Fehler auch im Hauptfenster auftritt, bitte die vorgehende Definition " +
                           "von 'warpmenuto' kontrollieren.");
            return;
          }
          var menu = zielmenu.parentNode.insertBefore(document.createXULElement('toolbarbutton'), zielmenu.nextSibling);
          menu.setAttribute("id", "ExtraConfigMenu-button");
          menu.setAttribute("class", "toolbarbutton-1");
          menu.setAttribute("type", "menu");
          menu.setAttribute("tooltiptext", "Extra Config Menü\nMittelklick \öffnet about:config");
          menu.setAttribute("onclick", "if (event.button === 1 && !this.open) {openTrustedLinkIn('about:config','tab')};");
        }
        //ab hier ist alles gleich, egal ob Button oder Menue
        var css = " \
          /* #ExtraConfigMenu, */ #ExtraConfigMenu-button { \
           background: 12px no-repeat url(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=) \
          } \
          // #ExtraConfigMenu .menubar-text { \
            // margin-inline-start: 34px !important;\
            // }\
          #ExtraConfigMenu-button > dropmarker, #ExtraConfigMenu-button > hbox > .toolbarbutton-menu-dropmarker { \
            display: none !important; \
          }";
        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.AGENT_SHEET);
        menu.setAttribute("onpopupshowing","uProfMenu.getScripts(0)");
        var menupopup = menu.appendChild(this.createME("menupopup",0,0,0,"ExtraConfigMenu-popup"));
    
        // Anlegen von Untermenues fuer die userChromeJS-Skripte (befuellt werden sie spaeter)
        var submenu=menupopup.appendChild(this.createME("menu","uc.js",0,0,"submenu-ucjs"));
        var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-ucjs-items"));
        // var submenu=menupopup.appendChild(this.createME("menu","uc.xul",0,0,"submenu-ucxul"));
        // var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-ucxul-items"));
        menupopup.appendChild(this.createME("menuitem","us.js-Datei erstellen","uProfMenu.createJSfile()","uProfMenu_createJSfile",0));
        if (this.enableScriptsToClip) menupopup.appendChild(this.createME("menuitem","Skriptliste in Zwischenablage","uProfMenu.getScripts(1)","uProfMenu_clipboard",0));
         // Ende Anlegen von Untermenues fuer die userChromeJS-Skripte
         
        if (this.configFiles) menupopup.appendChild(document.createXULElement('menuseparator'));
           
        // Einbindung von Konfigdateien
        if (this.configFiles) {
        menupopup.appendChild(this.createME("menuitem","userChrome.js","uProfMenu.edit(3,'userChrome.js');","uProfMenu_edit",0));
        menupopup.appendChild(this.createME("menuitem","userChrome.css","uProfMenu.edit(3,'userChrome.css');","uProfMenu_edit",0));
        menupopup.appendChild(this.createME("menuitem","userContent.css","uProfMenu.edit(3,'userContent.css');","uProfMenu_edit",0));
        menupopup.appendChild(this.createME("menuitem","prefs.js","uProfMenu.edit(1,'prefs.js');","uProfMenu_edit",0));
        menupopup.appendChild(this.createME("menuitem","user.js","uProfMenu.edit(1,'user.js');","uProfMenu_edit"),0);
        };
        // Ende Einbindung von Konfigdateien
        
        if (this.gmOrdner || this.cssOrdner) menupopup.appendChild(document.createXULElement('menuseparator'));
    
        // Einbindung von Ordnern
        switch (this.gmOrdner) {
          case 1:
            menupopup.appendChild(this.createME("menuitem","GM-Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'gm_scripts');","uProfMenu_folder"),0);
            break;
          case 2:
            menupopup.appendChild(this.createME("menuitem","USL-Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'UserScriptLoader');","uProfMenu_folder"),0);
            break;
          case 3:
            menupopup.appendChild(this.createME("menuitem","Scriptish-Skripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'scriptish_scripts');","uProfMenu_folder"),0);
            break;
        }
        
        if (this.cssOrdner) {
           if (this.cssOrdner == 1) {
          menupopup.appendChild(this.createME("menuitem",this.cssLocation1Name,"uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+uProfMenu.cssLocation1);","uProfMenu_folder"),0);
              if (this.cssLocation2.length>0) {
                 menupopup.appendChild(this.createME("menuitem",this.cssLocation2Name,"uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+uProfMenu.cssLocation2);","uProfMenu_folder"),0);
              };
              if (this.cssLocation3.length>0) {
                 menupopup.appendChild(this.createME("menuitem",this.cssLocation3Name,"uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+uProfMenu.cssLocation2);","uProfMenu_folder"),0);
              };
           } else {menupopup.appendChild(this.createME("menuitem",this.cssLocation1Name,"uProfMenu.dirOpen(uProfMenu.cssLocation1);","uProfMenu_folder"),0);
                if (this.cssLocation2.length>0) {
                menupopup.appendChild(this.createME("menuitem",this.cssLocation2Name,"uProfMenu.dirOpen(uProfMenu.cssLocation2);","uProfMenu_folder"),0);
                };
                if (this.cssLocation3.length>0) {
                menupopup.appendChild(this.createME("menuitem",this.cssLocation3Name,"uProfMenu.dirOpen(uProfMenu.cssLocation3);","uProfMenu_folder"),0);
                };
            }
        }
        
        if (this.firefoxOrdner) menupopup.appendChild(document.createXULElement('menuseparator'));
    
        if (this.firefoxOrdner) {
        menupopup.appendChild(this.createME("menuitem","Chromeordner","uProfMenu.prefDirOpen('UChrm');","uProfMenu_folder"),0);
        menupopup.appendChild(this.createME("menuitem","Profilordner","uProfMenu.prefDirOpen('ProfD');","uProfMenu_folder"),0);
        menupopup.appendChild(this.createME("menuitem","Addonordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'extensions');","uProfMenu_folder"),0);
        menupopup.appendChild(this.createME("menuitem","Installationsordner","uProfMenu.prefDirOpen('CurProcD');","uProfMenu_folder"),0);
        menupopup.appendChild(this.createME("menuitem","Startup-Cacheordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfLD')+uProfMenu.getDirSep()+'startupCache');","uProfMenu_folder"),0);
        }
        // Ende Einbindung von Ordnern
        
        if (this.abouts.length>0 || this.showNormalPrefs) menupopup.appendChild(document.createXULElement('menuseparator'));
        
        // Einbindung von abouts
        if (this.abouts.length>0) {
          // falls der erste Eintrag des arrays ='0' ist, dann kein Untermenue anlegen, sondern direkt als Menuepunkte einbinden
          if (this.abouts[0]=='0') {
            for (var i = 1; i < this.abouts.length; i++) {
            menupopup.appendChild(this.createME("menuitem",this.abouts[i],"openTrustedLinkIn('"+this.abouts[i]+"','tab')","uProfMenu_about"),0);
            }
          } else {
            // der erste Eintrag des arrays ist ungleich '0', deshalb als Untermenue einrichten
            var submenu=menupopup.appendChild(this.createME("menu","uc.js",0,0,"submenu-about"));
            var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-about-items"));
            this.fillMenu("submenu-about","submenu-about-items", "about:",this.abouts,"uProfMenu_about",1);
            }
        };
        // Ende Einbindung von abouts
        
        // Falls gewuenscht (s. Konfigurationsabschnitt), Zugriff auf die normalen Einstellungen
        if (this.showNormalPrefs) menupopup.appendChild(this.createME("menuitem","Einstellungen","try{openOptionsDialog();}catch(e){openPreferences();}","uProfMenu_prefs"),0);
        
        if (this.enableRestart) menupopup.appendChild(document.createXULElement('menuseparator'));
    
        // Falls enableRestart = 1, Neustart-Menuepunkt zur Verfügung stellen
        if(this.enableRestart) menupopup.appendChild(this.createME("menuitem","Neustart",
        "Services.appinfo.invalidateCachesOnRestart(); Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit,0);"));
    
      },
    
    
      getDirSep:function() {
        // Betriebssystem nach https://developer.mozilla.org/en/Code_snippets/Miscellaneous ermitteln
        var osString = Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).OS;
        var dirsep="/";
        switch(osString) {
          case "WINNT":
            dirsep="\\";
            break;
          case "Linux":
            dirsep="/";
            break;
          case "Darwin":
            dirsep="/";
            break;
        }
        return dirsep;
      },
    
    
      edit:function(OpenMode,Filename){
        var Path = "";
        var dSep = this.getDirSep();  // die Trennzeichen zwischen Ordnern abhaengig vom Betriebssystem machen
        switch (OpenMode){
          //Current is Chrome Directory or Subfolder
          case 0:
            if (this.jsSubfolder.length != 0) {
            var Path = this.getPrefDirectoryPath("UChrm") + dSep + this.jsSubfolder + dSep + Filename;
            } else {
               var Path = this.getPrefDirectoryPath("UChrm") + dSep + Filename;
            }
            break;
          //Current is Profile Directory
          case 1:
            var Path = this.getPrefDirectoryPath("ProfD") + dSep + Filename;
            break;
          //Current is Root
          case 2:
            var Path = Filename;
            break;
          //Current is Chrome Directory
          case 3:
            var Path = this.getPrefDirectoryPath("UChrm") + dSep + Filename;
            break;
        }
        this.launch(this.TextOpenExe,Path);
      },
    
    
      dirOpen:function(Path){
        if (this.vFileManager.length != 0) {
          var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
          var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
          var args=[Path];
          file.initWithPath(this.vFileManager);
          process.init(file);
          // Verzeichnis mit anderem Dateimanager oeffnen
          process.run(false, args, args.length);
         } else {
          // Verzeichnis mit Dateimanager des Systems oeffnen
          var dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
          dir.initWithPath(Path);
          dir.launch();
        }
      },
    
    
      prefDirOpen:function(prefDir){
        Path = this.getPrefDirectoryPath(prefDir);
        this.dirOpen(Path);
      },
    
    
      getPrefDirectoryPath:function(str){
        // get profile directory
        var file = Components.classes["@mozilla.org/file/directory_service;1"]
          .getService(Components.interfaces.nsIProperties)
          .get(str, Components.interfaces.nsIFile);
       // folgende 3 Zeilen nur für Firefox, nicht für Thunderbird
        if (str == 'CurProcD') {
          file = file.parent;
        };
        return file.path;
      },
    
    
      launch:function(RanPath,OpenPath){
        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile);
        var proc = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
        var args = [OpenPath];
        file.initWithPath(RanPath);
        // falls der im Konfigurationsabschnitt definierte Editor nicht gefunden wird, auf Einstellung in about:config ausweichen:
        if (!file.exists()) {
          var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
          RanPath=pref.getCharPref("view_source.editor.path");
          file.initWithPath(RanPath);
        }
        proc.init(file);
        proc.run(false, args, args.length);
      },
    
    
      stringComparison:function(a, b){
        a = a.toLowerCase();
        a = a.replace(/ä/g,"a");
        a = a.replace(/ö/g,"o");
        a = a.replace(/ü/g,"u");
        a = a.replace(/ß/g,"s");
        b = b.toLowerCase();
        b = b.replace(/ä/g,"a");
        b = b.replace(/ö/g,"o");
        b = b.replace(/ü/g,"u");
        b = b.replace(/ß/g,"s");
        return(a==b)?0:(a>b)?1:-1;
      },
    
    
      getScripts:function(iType) {
        // Arrays (jeweils ein Array fuer uc.js und uc.xul) nehmen Namen der gefundenen Skripte auf
        let ucJsScripts = [];
        // let ucXulScripts = [];
        // Suchmuster, also die Dateierweiterungen uc.js und uc.xul
        let extjs = /\.uc\.js$/i;
        // let extxul= /\.uc\.xul$/i;
        let aFolder = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        if (this.jsSubfolder.length != 0) {
           aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path+uProfMenu.getDirSep()+this.jsSubfolder);
        } else {
            aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path);
        };
        // files mit Eintraegen im Chrome-Ordner befuellen
        let files = aFolder.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator);
        // Ordner bzw. files durchlaufen und kontrollieren, ob gesuchte Dateien dabei sind
        while (files.hasMoreElements()) {
          let file = files.getNext().QueryInterface(Ci.nsIFile);
          // keine gewuenschte Datei, deshalb continue
          if (!extjs.test(file.leafName) /* && !extxul.test(file.leafName) */) continue;
          // uc.js gefunden -> im Array ablegen
          if (extjs.test(file.leafName)) ucJsScripts.push(file.leafName);
          // uc.xul gefunden -> im Array ablegen
          // if (extxul.test(file.leafName)) ucXulScripts.push(file.leafName);
        }
        if (this.sortScripts) {
          ucJsScripts.sort(this.stringComparison);
          // ucXulScripts.sort(this.stringComparison);
        }
        // Aufruf der naechsten Methoden um die beiden Untermenues oder die Zwischenablage zu befuellen
        if (iType==0) {
          this.fillMenu("submenu-ucjs","submenu-ucjs-items", "uc.js",ucJsScripts,"uProfMenu_ucjs",0);
          // this.fillMenu("submenu-ucxul","submenu-ucxul-items", "uc.xul",ucXulScripts,"uProfMenu_ucxul",0);
         } else {
          var result=this.fillClipboardValue(ucJsScripts/* ,ucXulScripts */);
          Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper).copyString(result);
        }
      },
    
    
      fillMenu:function(whichsubmenu, whichsubmenuitems, strlabel, scriptArray,sClass,sTyp) {
        // Beschriftung des Untermenues mit Anzahl der gefundenen Dateien ergaenzen
        var e = document.getElementById(whichsubmenu);
        e.setAttribute('label',strlabel + ' (' + scriptArray.length + ')');
        var popup = document.getElementById(whichsubmenuitems);
        // zunaechst Untermenue zuruecksetzen
        while(popup.hasChildNodes()){
          popup.removeChild(popup.firstChild);
        }
        // Untermenue endlich befuellen
        for (var i = scriptArray.length-1; i > -1; i--) {
          // bisher nur eine Typunterscheidung (userChromeJS-Skript oder about:)
          if (sTyp==0){
            var mitem = this.createME("menuitem",scriptArray[i],"uProfMenu.edit(0,'"+scriptArray[i]+"')",sClass,0);
            mitem.setAttribute("onclick","uProfMenu.openAtGithub(event,'"+scriptArray[i]+"')");
            mitem.setAttribute("tooltiptext"," Linksklick: Bearbeiten,\n Mittelklick: https://github.com/.../"+this.cleanFileName(scriptArray[i])+" oeffnen,\n Rechtsklick: Suche auf GitHub");
           } else {
            var mitem = this.createME("menuitem",scriptArray[i],"openTrustedLinkIn('"+scriptArray[i]+"','tab')",sClass,0);
          }
          popup.insertBefore(mitem, popup.firstChild);
        }
      },
    
    
      fillClipboardValue:function(sArray/* ,xArray */) {
        var retValue;
        var s = 0;
        // var x = 0;
        s = sArray.length;
        // x = xArray.length;
        switch(this.enableScriptsToClip) {
          case 1:
            retValue = "userChromeJS/uc.js ("+s+"):\n------------------------\n"+sArray.join("\n");
                       // "\n\nuserChromeJS/uc.xul ("+x+"):\n-------------------------\n"+xArray.join("\n");
            break;
          default:
            retValue = "userChromeJS/uc.js ("+s+"):\n------------------------";
            for (var i = 0; i < s ; i++) {
              j = i + 1;
              retValue = retValue + "\n" + j + ". " + sArray[i];
            }
            // retValue = retValue + "\n\nuserChromeJS/uc.xul ("+x+"):\n-------------------------";
            // if (this.enableScriptsToClip==2) s = 0;
            // for (var i = 0; i < x ; i++) {
              // j = i + s + 1;
              // retValue = retValue + "\n" + j + ". " + xArray[i];
            // }
            break;
        }
        return retValue;
      },
    
    
      createME:function(sTyp,sLabel,sCommand,sClass,sId) {
        // Anlegen von menuitem, menu oder menupop - fuer bestimmte Typen nicht eingesetzte Parameter werden als 0 uebergeben
        const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
        var m = document.createElementNS(XUL_NS, sTyp);
        switch (sTyp) {
          case "menuitem":
            // this.createME("menuitem","Label des Items","ZuzuweisenderCodeFueroncommand","GewuenschteKlasseDesItems",0)
            m.setAttribute('label', sLabel);
            m.setAttribute('oncommand',sCommand);
            m.setAttribute('class',sClass);
            break;
          case "menu":
            // this.createME("menu","Label des Menues",0,0,"GewuenschteIdDesMenues")
            m.setAttribute('label', sLabel);
            m.setAttribute('id', sId);
            break;
          case "menupopup":
            //this.createME("menupopup",0,0,0,"GewuenschteIdDesMenupopups");
            m.setAttribute('id', sId);
            break;
        }
        return m;
      },
    
    
      openAtGithub:function(e,sScript) {
        if (e.button==1){
          // Mittelklick - Seite auf GitHub oeffnen (funktioniert nur, wenn Ordner- und bereinigter Dateiname [ohne Erweiterung] uebereinstimmen):
          e.preventDefault();
          var sUrl="https://github.com/Endor8/userChrome.js/tree/master/"+this.cleanFileName(sScript);
          openWebLinkIn(sUrl, 'tab');
        }
        if (e.button==2){
          // Rechtsklick - Suche auf GitHub starten (funktioniert nur, wenn der Dateiname im Code hinterlegt ist):
          e.preventDefault();
          var sUrl="https://github.com/search?langOverride=&language=&q="+this.cleanFileName(sScript)+"&repo=&start_value=1&type=Code";
          openWebLinkIn(sUrl, 'tab');
        }
      },
    
    
        createJSfile: function(Filename) {
            if (!Filename) Filename = prompt("Name des Skripts", "skriptName");
            if (Filename) Filename = Filename.replace(/\s+/g, " ").replace(/[\\/:*?\"<>|]/g, "");
            if (!Filename || !/\S/.test(Filename)) return;
            if (!/\.uc.js$/.test(Filename)) Filename += ".uc.js";
            this.edit(0, Filename);
        },
    
    
       cleanFileName:function(sName) {
        sName=sName.toLowerCase();
        /* Das folgende Array enthaelt regulaere Ausdruecke, um ungueltige Zeichenfolgen entfernen:
        /Datei-Erweiterungen am Ende/, /"ucjs_" am Anfang/, /"_"gefolgtVonZahlUndDanachBeliebigenZeichen/
        / "_fx"gefolgtVonZahl(en)/, /"-" oder "+" oder "."/, /"_v"gefolgtVonZahlen
        */
        var regs=[/\.uc\.js$/,/\.uc\.xul$/,/^ucjs_/,/_\d.+/,/_fx\d+/,/[-+\.]/g,/_v\d+/];
        for (var i = 0; i < regs.length; i++) {
          sName=sName.replace(regs[i],"");
        }
        return sName;
      }
    
    
    };
    uProfMenu.init();
    Alles anzeigen
    JavaScript: userchrome.js
    // userChrome.js
    userChrome.ignoreCache = true;
    userChrome.import("*", "UChrm");
    userChrome.import("JS\\", "UChrm");
  • FF 112.0.1 - Menüsymbole sind weg

    • bege
    • 23. April 2023 um 23:18

    Siehe hier https://github.com/ChoGGi/CuteBut…ment-1507646355 und folgende

  • uBlockOrigin auf Finya deaktiviert

    • bege
    • 31. März 2023 um 14:40

    Ich würde die Listen nicht dauerhaft deaktivieren. Im fortgeschrittenen Modus von uBlock (Einstellungen, ganz unten) kann man für jede Domain die Blockierungen detaillierter ein- und ausschalten. Damit kriege ich solche Probleme meist in den Griff.

    Dass eine Seite gar nicht angezeigt wird, liegt hier manchmal auch am Filter bzw. der eigenen Erweiterung "I don't care about Cookies". Die muss ich dann für die Seite deaktivieren.

  • FF 111.01: Websites öffen gar nicht oder nur teilweise oder brauchen sehr lange

    • bege
    • 31. März 2023 um 14:23
    Zitat von micha112

    Hallo,

    seit ein paar Tagen haben wir auf unseren Familien-PC's das Problem, dass manche websites gar nicht oder nur teilweise geöffnet werden oder es dauert extrem lange bis sie vollständig dargestellt werden. Das ist aber nicht bei allen websites so. Wir haben auf allen PC's den Cache und die Cookies gelöscht. Einen Speedcheck der Internetverbindung zeigt volle Geschwindigkeit (100 up, 40 down, ping 13ms). Kopiere ich die url wenn Firefox endlos lange benötigt und öffne sie z.B. in Chrome oder edge wird die Seite dort umgehend geladen während FF immer noch rödelt. Klickt man dann auf das X zum Abbruch des Ladens und danach auf Neuladen kann es sein, dass die Seite sofort aufgebaut wird oder eben wieder in die Warteschleife geht. Ich kann also keinen nachvollziehbaren Grund finden.

    Gibt es die Probleme nur bei uns oder hat jemand dasselbe Problem?

    Bei mir tritt das schon lange vor der Version 111 auf, ich habe nur die Windows-eigene Firewall und Virenschutz. Ich gehe davon aus, dass es an einer Fx-eigenen Datenschutzfunktion, einer oder mehreren Erweiterungen oder Kombinationen davon liegt. Ausführlich durchgetestet habe ich das bisher nicht.

  • -moz-image-region ersetzen, Bilddatei mit vielen Symbolen

    • bege
    • 12. März 2023 um 22:07
    Zitat von grisu2099
    Zitat von bege

    aborix hatte mir ein Skript geschrieben, mit dem allen Menüeinträgen wieder die Class .menu-iconic oder .menuitem-iconic zugewiesen wurde.

    Das Skript würde ich gerne mal testen... ;)

    JavaScript: addMenuClass_aborix.uc.js
    setTimeout(function() {
        var ucjsAC = {
            init : function () {
                const menu = document.querySelectorAll('menu');
                menu.forEach(query => query.classList.add('menu-iconic'));
                
                const menuitem = document.querySelectorAll('menuitem');
                menuitem.forEach(query => query.classList.add('menuitem-iconic'));
            },
        }
    ucjsAC.init();
    }, 5000);
    Alles anzeigen

    Das funktioniert nur für Menüeinträge, die beim Start des Fx vorhanden sind. Vereinzelt erstellen Erweiterungen sie erst später, da funktioniert es nicht.

  • -moz-image-region ersetzen, Bilddatei mit vielen Symbolen

    • bege
    • 12. März 2023 um 21:16
    Zitat von 2002Andreas

    Den Code habe ich mal etwas angepasst, und bemerke keinerlei Probleme mit der :is Version.

    CSS
    menupopup menuitem.menuitem-iconic {
      margin-left: -6px;
    }
    
    menupopup :is(menu,menuitem):not(menuitem.menuitem-iconic):before {
      color: transparent !important;
      content: -moz-label-content;
      height:16px;
      width:16px;
      margin-right: 6px;
      margin-left: -4px;
    }
    #context-openlinkintab:before,
    #context-inspect-a11y:before,
    #context-inspect:before,
    #context-bookmarklink:before {
      background-image: url("file:///C:/Users/Andi/Icons%20Firefox/mosaic.png");
      background-position: -430px -144px;
    }
    
    #context-viewimage:before {
      background-image: url("file:///C:/Users/Andi/Icons%20Firefox/mosaic.png");
      background-position: -96px -144px;
    }
    
    #context-copylink:before {
      background-image: url("file:///C:/Users/Andi/Icons%20Firefox/mosaic.png");
      background-position: -80px -144px;
    }
    
    #context-saveimage:before {
      background-image: url("file:///C:/Users/Andi/Icons%20Firefox/mosaic.png");
      background-position: -130px -144px;
    }
    Alles anzeigen

    Evtl. kann Sören ja genaueres dazu sagen, ob das per :is keine gute Lösung in diesem Fall ist.

    Das macht mich auf einen Unterschied zu meinem bisherigen Code aufmerksam. aborix hatte mir ein Skript geschrieben, mit dem allen Menüeinträgen wieder die Class .menu-iconic oder .menuitem-iconic zugewiesen wurde. Dadurch habe ich nur list-style-image und -moz-image-region im CSS-Code benötigt, kein background und  :before oder sonst etwas.

    Jetzt bleibt also nur entweder das komplett umzubauen, oder eben doch die mosaic.png in einzelne Dateien aufzuspalten.

  • -moz-image-region ersetzen, Bilddatei mit vielen Symbolen

    • bege
    • 11. März 2023 um 21:29
    Zitat von 2002Andreas
    Zitat von Speravir

    zusammenfassen kann

    Z.B. so:

    CSS
    :is(menu,menuitem):before {
      color: transparent !important;
      content: -moz-label-content;
      height:16px;
      width:16px;
      margin-right: 6px;
      margin-left: -8px;
    }
    
    #context-bookmarklink:before {
      background-image: url("file:///C:/Users/Andi/Icons%20Firefox/mosaic.png");
      background-position: -430px -144px;
    }
    
    #context-viewimage:before {
      background-image: url("file:///C:/Users/Andi/Icons%20Firefox/mosaic.png");
      background-position: -96px -144px;
    }
    
    #context-copylink:before {
      background-image: url("file:///C:/Users/Andi/Icons%20Firefox/mosaic.png");
      background-position: -80px -144px;
    }
    
    #context-saveimage:before {
      background-image: url("file:///C:/Users/Andi/Icons%20Firefox/mosaic.png");
      background-position: -130px -144px;
    }
    Alles anzeigen

    Großartig, vielen Dank.


    Zitat von Speravir
    Zitat von 2002Andreas

    Z.B. so:

    Genau. Wobei hier vermutlich statt menu,menuitem besser mit den IDs der Kontextemenüeinträge zu hantieren wäre.

    Auch dir vielen Dank für die Vorarbeit. Wenn ich den CSS-Code der alten CuteMenus-Erweiterung nutze, wäre das ansprechen jeder ID wegen der vielen IDs nicht umsetzbar. Ich werde mir das mit etwas Muße mal anschauen und dann sehen, welcher Weg der einfachste ist.

  • -moz-image-region ersetzen, Bilddatei mit vielen Symbolen

    • bege
    • 8. März 2023 um 18:53
    Zitat von Sören Hentzschel

    Naja, anpassen musst du jetzt so oder so, auf die eine oder die andere Weise.


    Ab voraussichtliich Anfang Juli nicht mehr. ;)


    Bei dem Beispiel kann ich leider nicht direkt helfen. Da geht es um ein Kontextmenü und ich nutze macOS. Auf macOS werden die nativen Kontextmenüs des Betriebssystems genutzt, die können nicht via CSS angepasst werden. Aber um das mal etwas zu skizzieren:

    Mit einer Einzelgrafik kannst du einfach list-style-image überschreiben und die Zeile mit -moz-image-region entfernen. Fertig. Du musst dir null Gedanken über irgendwelche Koordinaten machen.

    Für ein Image Sprite musst du zusätzlich dazu, list-style-image und -moz-image-region zu entfernen, background-image definieren, background-size mit der Größe des Bildes und background-position mit den Start-Koordinaten, die anders angegeben werden als bei -moz-image-region. Möglicherweise brauchst du noch background-repeat. Im einfachsten Fall musst du noch width und height mit den Abmessungen der einzelnen Grafik angeben. Nur kann es je nach Element sein, dass du dieses damit verkleinerst, was unerwünscht wäre. Dann müsste man einen Teil des Codes in ein Pseudoelement (::before oder ::after) geben, welches man dann vermutlich absolut positionieren würde, was wiederum über ein halbes Dutzend weiterer Zeilen CSS bringt.

    Der Vorteil von Image Sprites ist eigentlich nur, dass man Dateigröße und die Anzahl benötigter Anfragen einsparen kann. Ein Gewinn der Dateigröße existiert aber halt auch nur, wenn man wirklich zumindest annähernd alle Icons verwendet. Und die Anzahl an Anfragen spielt heute im Web keine große Rolle mehr und im Kontext der Browseroberfläche sowieso nicht.

    Wenn man sowieso nur zwei Grafiken kombiniert (beispielsweise normal und :hover), kann ein Image Sprite eine elegante Lösung sein, auch weil der Aufwand überschaubar bleibt. Im :hover-Beispiel vermeidet man damit außerdem ein Flackern, wenn die :hover-Grafik noch nicht im Cache ist, wofür man sonst einen Workaround bräuchte, der wiederum mehr Zeilen CSS benötigt. Aber in diesem Fall glaube ich wirklich, dass man sich mit den Einzelgrafiken einen größeren Gefallen tut, weil die Bilddatei erstens so viel Unbenutztes beinhaltet und damit unnötig Ressourcen beansprucht, zweitens weil die Anpassung sehr viel einfacher ist und man nicht für jede Grafik einzeln die Position abmessen muss.

    Alles anzeigen

    Vielen Dank. 👍 Na, dann kann ich mich ja an die Arbeit machen.

  • -moz-image-region ersetzen, Bilddatei mit vielen Symbolen

    • bege
    • 7. März 2023 um 23:01
    Zitat von Sören Hentzschel

    Das ist richtig. Das macht es von der Anpassung her aber auch wesentlich komplizierter, weil du mehr CSS benötigst und ganz andere Positionsangaben benötigst. Die Grafik zurechtzuschneiden und einzubinden, ist da definitiv einfacher. Ich wollte mit meiner Aussage auch nur darauf hinaus, dass es technisch kein Muss ist, Einzelgrafiken zu erstellen. Der bessere Weg ist das nicht unbedingt, vor allem wenn das Image Sprite wie in diesem Fall aus mehreren hundert (!) Icons besteht, von denen sehr wahrscheinlich nur wenige überhaupt benutzt werden. Die Anwendungsfälle, bei denen Mozilla auf background-image umgestellt hat, waren bei weitem nicht so komplex.

    Ich nutze für die Symbole immer noch den CSS-Code der Uralt-Erweiterung CuteMenus, die tatsächlich viel mehr Code und Grafiken enthält, als benötigt werden. Nur erspart mir das eine Menge Arbeit, weil ich nicht selbst für jeden Menüeintrag den Code erstellen muss. Und in Thunderbird funktioniert es auch noch. Wenn ich das Image Sprite aufteile, habe ich auch eine Menge Arbeit, um den Code anzupassen.

    Könntest du mir für obiges Beispiel den Code angeben, wenn ich das Image Sprite behalten will? Dann kann ich sehen, welche Änderung weniger Arbeit macht.

  • -moz-image-region ersetzen, Bilddatei mit vielen Symbolen

    • bege
    • 7. März 2023 um 22:27
    Zitat von 2002Andreas

    Z.B. so:

    CSS
    #context-viewimage::before {
        background: url("file:///C:/Users/Andi/Icons%20Firefox/4.jpg")!important;
        margin-right: 8px !important; 
        margin-left: -6px !important;
        content: '' !important;
        display: block !important;
        width: 16px !important;
        height: 16px !important;
        background-repeat: no-repeat !important;
        background-position: 0px 0px !important;
        }
    Alles anzeigen

    D.h., du musst jetzt ein einzelnes Icon dafür nehmen.

    Das habe ich kapiert. Aber diese Aussage von Soeren

    Zitat

    Die andere Option, Einzelgrafiken aus solchen Mehrfachgrafiken zu machen, wie Aris es getan hat, geht natürlich auch, ist aber auch nicht zwingend notwendig

    aus RE: Entwicklung Firefox verstehe ich so, dass ich weiterhin die große Datei verwenden kann.

  • -moz-image-region ersetzen, Bilddatei mit vielen Symbolen

    • bege
    • 7. März 2023 um 20:33
    Zitat von 2002Andreas
    Zitat von bege

    wie ich -moz-image-region ersetzen muss

    Dazu gibt es schon einen Thread incl. Beispielen und Erklärungen:

    Beitrag

    RE: -moz-image-region entfällt

    […]

    […]

    Um keine Missverständnisse aufkommen zu lassen: list-style-image kann sehr wohl weiterhin genutzt werden, nur ab Firefox 112 nicht mehr mit sogenannten Sprite-Grafiken, das sind diese Grafiken, die aus mehreren Teilbildern bestehen (für die Suchmaschine: „CSS sprites“; im SelfHTML-Wiki: Sprites-Tutorial).

    Aris hat für seine Sammlung CustomCSSforFx genau die Lösung gewählt, die Sprites in ihre Teilgrafiken zu zerlegen und letztere jetzt einzeln anzusprechen.

    […]

    Ohne es mir im Detail…
    Speravir
    2. März 2023 um 23:56

    Dankeschön. Ich habe beide Threads gelesen und verstehen immer noch nicht, wie ich den obigen Code mit background-image und background-position ersetzten kann. Kannst du mir das an dem obigen Beispiel zeigen?

  • -moz-image-region ersetzen, Bilddatei mit vielen Symbolen

    • bege
    • 3. März 2023 um 00:47
    Zitat von Sören Hentzschel

    Ein konkretes Beispiel würde es einfacher machen. Den Selektor finde ich im Quellcode von Firefox nicht und die Grafik bitte auch anhängen.

    Zweiter Versuch:

    (Grafik in neuem Tab öffenen)

    CSS
    #context-viewimage {
    list-style-image:url('../../../../icons/mosaic.png')!important;
    -moz-image-region:rect(144px 112px 160px 96px)!important
    }

  • -moz-image-region ersetzen, Bilddatei mit vielen Symbolen

    • bege
    • 1. März 2023 um 21:06
    Zitat von Sören Hentzschel

    Weil hier und auch im GitHub-Issue clip-path erwähnt wurde: Der Zusammenhang zu -moz-image-region ist vor allem, dass auf dessen MDN-Seite erwähnt wird, dass die Syntax ähnlich zu clip ist, was wiederum zu Gunsten von clip-path nicht länger verwendet werden soll. Der naheliegende Ersatz für -moz-image-region, weil viel unkomplizierter, ist in vielen Fällen aber ganz einfach die Umsetzung als background. So hat es Mozilla beispielsweise hier gemacht:

    https://hg.mozilla.org/mozilla-central/rev/d8e1a8bee539

    Die andere Option, Einzelgrafiken aus solchen Mehrfachgrafiken zu machen, wie Aris es getan hat, geht natürlich auch, ist aber auch nicht zwingend notwendig und hat nach seinen eigenen Angaben die Dateigröße um 40 Prozent vergrößert, was ich für einen ziemlich starken Anstieg halte, falls das wirklich nur darauf zurückzuführen ist (womit die Gesamtgröße natürlich immer noch überschaubar ist und das kein Problem oder dergleichen darstellt, also alles gut). Die Austauschbarkeit ist bei Einzelgrafiken sicherlich einfacher. Die Wartbarkeit höher als die Dateigröße zu gewichten, ist auch vollkommen legitim.

    Ich habe noch nicht verstanden, wie ich -moz-image-region ersetzen muss, wenn ich eine Datei mit vielen Symbolen nicht in einzelne Dateien aufspalten will. Wie muss dann der neue Code für dieses Beispiel aussehen?

    CSS
    #idShowPicture {
    list-style-image:url('../../../../icons/mosaic.png')!important;
    -moz-image-region:rect(144px 112px 160px 96px)!important
    }
  • Skript "OpenbookModoki" funktioniert nicht mehr

    • bege
    • 29. Januar 2023 um 21:21
    Zitat von Mira_Belle
    Zitat von Sören Hentzschel

    Man ersetze alle collapsed durch hidden, dann sollte es wieder funktionieren.

    Funktioniert. Danke.

    Habe Dich verewigt und einen Link hierher gesetzt.

    Danke allen, die daran beteiligt waren.

    Wenn ich ein Schlagwort eingeben will, wird nach dem ersten Buchstaben das erste vorhandene Schlagwort mit diesem Anfangsbuchstaben eingefügt und hervorgehoben. Das führt dazu, dass mit dem zweiten eingegebenen Buchstaben der erste wieder weg ist.

    Lösche ich alles und gebe nochmal den ersten Buchstaben ein, werden nur die folgenden Buchstaben hervorgehoben und man bekommt immer die passenden vorhandenen Schlagwörter angezeigt. So sollte es gleich zu Beginn sein.

    Wie muss das Skript geändert werden, damit es gleich beim ersten Tippen richtig funktionert?

    Edit:

    In Aris' Version https://github.com/Aris-t2/Custom…_expanded.uc.js funktioniert das Schlagwörter-Feld, aber es fehlt das Schlüsselwort-Feld. Beim Vergleichen der Skripte schwirrt mir der Kopf, ich hoffe, jemand von euch findet den Haken.

  • Keine Erweiterunen mehr im Überhangmenü nach Update auf Fx109.0

    • bege
    • 22. Januar 2023 um 19:59
    Zitat von reni

    Sorry, wenn ich mich hier mein "einklinke" - Wer bestimmt eigentlich die Reihenfolge in dem Erweiterungsmenü und die Anzahl der angezeigten Erweiterungen?

    Bei mir stehen oben diejenigen, die ich vorher im Überhangmenü hatte, darunter alle anderen alphabetisch.


    Zitat von 2002Andreas
    Zitat von reni

    Wer bestimmt eigentlich die Reihenfolge

    Mozilla ;)

    In Zukunft werden die aber verschiebbar sein.

    Wenigstens etwas, das zur Übersichtlichkeit beiträgt.

  • Keine Erweiterunen mehr im Überhangmenü nach Update auf Fx109.0

    • bege
    • 22. Januar 2023 um 19:57
    Zitat von 2002Andreas
    Zitat von bege

    Habe ich etwas übersehen oder falsch verstanden

    Die sind jetzt alle in dem neuen Button oben rechts für Erweiterungen.

    Wenn nicht, sieh mal im Anpassenfenster nach.


    Zitat von bege

    das Überhangmenü tatsächlich nicht mehr für Addon-Buttons verwendet werden

    Richtig.

    Siehe bitte auch mal hier:

    Beitrag

    Addons-icon verstecken/entfernen

    kann ich dieses "puzzleteil" icon, das zum anzeigen und verwalten der addons hinzugefügt wurde, irgendwie los werden?

    Es gibt ka schon im Anwendungsmenü den Bereich Addons und themes, über den ich alles machen kann, dieses neue icon finde ich komplett unnötig. Ich kann es über "Symbolleiste anpassen" aber leider nicht verschieben. Gibt es es vielleicht eine Möglichkeit über about:config ?
    Thaliel
    18. Januar 2023 um 03:31

    So sieht das dann für die Zukunft aus:

    Alles anzeigen

    Danke für die prompte Antwort.

    Jetzt habe ich also zwei "Überhangmenüs", eins für Firefox-Funktionen und eines für Addons und kann nicht nur die Addon-Buttons darin anzeigen lassen, die ich ab und zu brauche, sondern muss durch alle nicht angezeigten Addon-Buttons scrollen. Schade, finde ich sehr umständlich.

  • Keine Erweiterunen mehr im Überhangmenü nach Update auf Fx109.0

    • bege
    • 22. Januar 2023 um 19:47

    Hallo,

    nach dem Update auf Fx109.0 sind alle Addon-Button aus dem Erweiterungsmenü verschwunden und auch im Pool von "Symbolleiste anpassen" gibt es keine Addon-Button mehr und es können auch keine mehr dorthin verschoben werden. Das Hinzufügen geht nur über den neuen Addon-Button. Die vorhandenen Buttons können auch nicht mehr ins Überhangmenü verschoben werden, sondern nur noch per Klick auf "an Symbolleiste anheften" entfernt werden.

    Habe ich etwas übersehen oder falsch verstanden, oder kann das Überhangmenü tatsächlich nicht mehr für Addon-Buttons verwendet werden, die man nicht so oft braucht? Das würde bedeuten, dass ich alle Buttons in einer Symbolleiste anzeigen muss, was Platzverschwendung und unübersichtlich wäre.

  • Skript "OpenbookModoki" funktioniert nicht mehr

    • bege
    • 22. Januar 2023 um 19:04

    Ich hatte damit schon länger noch ein anderes Problem. Wenn ich ein Stichwort eingeben wollte, sprang der Cursor nach dem ersten Buchstaben in das Feld für den Namen des Lesezeichens und löschte mit dem zweiten eingegebenen Buchstaben den dortigen Inhalt.

  • userChrome.js Scripte für den Fuchs (Diskussion)

    • bege
    • 29. November 2022 um 13:43
    Zitat von Doesbaddel

    Deshalb sage ich erstmal vielen Dank für die Hilfe und überlege weiter.

    Ich nutze die Erweiterung auch und ich weiß keine Lösung für deine Frage. Aber die Erweiterung setzt doch ein Symbol in die Adressleiste, das genau diese Funktion hat: Ein Klick und die Seite ist gespeichert. Hat es einen bestimmten Grund, dass du das über das Kontextmenü und nicht über dieses Symbol machen willst?

Unterstütze uns!

Jährlich (2025)

60,4 %

60,4% (392,55 von 650 EUR)

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