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

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

    • FuchsFan
    • 16. Januar 2025 um 11:36
    Zitat von Endor

    Das Schaltflächensymbol wird auch nicht angezeigt.

    Kann nicht, weil ich nicht das Original verwende.

    Mit dem Fehler Zeile 114 kann ich überhaupt nichts anfangen userChromeJS/utilities.js:114

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • FuchsFan
    • 16. Januar 2025 um 11:03
    Zitat von Mira_Belle

    Poste doch bitte Diene Version des Appmenüs bitte.

    userChrome.js/Firefox 135/Appmenu.uc.js at master · Endor8/userChrome.js
    Skripte für die Firefox-Erweiterung userChromeJS. Contribute to Endor8/userChrome.js development by creating an account on GitHub.
    github.com
  • userChrome.js Scripte für den Fuchs (Diskussion)

    • FuchsFan
    • 16. Januar 2025 um 10:28
    Zitat von Endor

    Dann müsstest Du bitte Deine Version rein stellen.
    Sonst wird es schwer das nachzuvollziehen.

    CSS
    // ==UserScript==
    // @name           extras_config_menu.uc.js
    // @compatibility  Firefox 6*.*
    // @include        main
    // @version        1.0.20190504
    // @edit           @aborix - Erweiterung mit Submenüs / 02.12.2022 
    // @edit           @FuchsFan - Erweiterung mit Ordner JS und Submenü Scripte
    // @edit 		   @BrokenHeart	1/25 - Anpass. wg. Änderung der Sicherheitsrichtlinien bei 'inlineEvents'
    // ==/UserScript==
    
    var uProfMenu = {
      // Beginn der Konfiguration
      // In der folgenden Zeile (11) 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 (x86)\\Notepad++\\notepad++.exe',
      TextOpenExe: 'C:\\notepad++\\notepad++.exe',
      // Falls gewuenscht, in Zeile 15 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: '',
      // Falls die JavaScript-Scripte nicht im chrome-Verzeichnis, sondern einem Unterverzeichnis sind,
      // in der folgenden Zeile das Unterverzeichnis eintragen, sonst '':
      jsSubfolder: 'Scripte',
      // In der folgenden Zeile (19) 'menu' eintragen, damit es unter "Extras" als Menue 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: 'searchbar',
     // 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: UserCSSLoader-Ordner im Chrome-Verzeichnis):
      cssOrdner: 0,
      // In Zeile 30 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:about','about:addons','about:cache','about:config','about:support'],
      abouts: ['about:about','about:addons','about:buildconfig','about:cache','about:certificate','about:compat','about:config','about:crashes','about:debugging',
               'about:logging','about:logins','about:loginsimportreport','about:memory','about:networking','about:performance','about:plugins','about:policies','about:preferences','about:privatebrowsing','about:profiles','about:processes','about:profiling',
               'about:protections','about:serviceworkers','about:support','about:telemetry','about:third-party','about:unloads','about:url-classifier','about:webrtc','about:welcome','about:welcomeback','about:windows-messages'],
      // 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,
      // Um den Eintrag "Neustart" zu erzwingen (falls z.B. das andere Skript zu spaet eingebunden und nicht erkannt wird), auf 1 setzen:
      enableRestart: 1,
      // Ende der Konfiguration
    
      init: function() {
        if (this.warpmenuto.toLowerCase() == 'menu') {
          // aufgrund des gewaehlten warpmenuto als Untermenue von Extras anlegen
          var zielmenu = document.getElementById('menu_ToolsPopup');
          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\u00FC",0,0,"ExtraConfigMenu"));
          menu.setAttribute("class","menu-iconic");
          menu.setAttribute("ondblclick","openTrustedLinkIn('about:config', 'tab');");
         } 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 && event.target==this) openTrustedLinkIn('about:config','tab');");
        } */
    	
    	// als verschiebbaren Button anlegen
          if (window.__SSi == "window0") {
            CustomizableUI.createWidget({
              id: "ExtraConfigMenu-button",
              defaultArea: CustomizableUI.AREA_NAVBAR,
              label: "Extra Config Menü",
              tooltiptext: "Extra Config Menü\nRechtsklick \öffnet about:config"
            });
    		
          }
          var menu = document.getElementById("ExtraConfigMenu-button");
          menu.setAttribute("type", "menu");
    	  menu.addEventListener('click', function(event) {
    			if (event.button == 2 && !this.open) { 
    				openTrustedLinkIn("about:config", "tab");
    				event.preventDefault();
    			};
    	 },true);
    	  
        }
    	
    	//ab hier ist alles gleich, egal ob Button oder Menue
        var css = " \
          #ExtraConfigMenu, #ExtraConfigMenu-button { \
            list-style-image: url(file:///C:/FoxIcons/1206.png) !important; margin-right: 10px !important; margin-bottom: 2px !important; margin-top: 2px !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.addEventListener('popupshowing', function(event) {
    			uProfMenu.getScripts(0);
    			uProfMenu.getCss(3);
    			uProfMenu.getCss(4);
    			uProfMenu.getCss(5);
    	 },true);
    	
        var menupopup = menu.appendChild(this.createME("menupopup",0,0,0,"ExtraConfigMenu-popup"));
        // Anlegen von Untermenues fuer userChromeJS-Skripte und CSS-Dateien (befuellen spaeter)
        var submenu=menupopup.appendChild(this.createME("menu","Scripte",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"));
        var submenu = menupopup.appendChild(this.createME("menu","css",0,0,"submenu-css"));
        var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-css-items"));
        var submenu = menupopup.appendChild(this.createME("menu","cssweb",0,0,"submenu-cssweb"));
        var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-cssweb-items"));
        var submenu = menupopup.appendChild(this.createME("menu","cssabout",0,0,"submenu-cssabout"));
        var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-cssabout-items"));
        
    	if (this.enableScriptsToClip) menupopup.appendChild(this.createME("menuitem","Skriptliste in Zwischenablage","uProfMenu.getScripts(1)","uProfMenu_clipboard",0));
    	
        // Ende Anlegen von Untermenues
    	    
    	menupopup.appendChild(document.createXULElement('menuseparator'));
        
    	// Einbindung von Konfigdateien
        menupopup.appendChild(this.createME("menuitem","userChrome.css","uProfMenu.edit(7,'userChrome.css');","uProfMenu_edit",0));
        menupopup.appendChild(this.createME("menuitem","userContent.css","uProfMenu.edit(7,'userContent.css');","uProfMenu_edit",0));
        menupopup.appendChild(this.createME("menuitem","userChromeShadow.css","uProfMenu.edit(7,'userChromeShadow.css');","uProfMenu_edit",0));
        menupopup.appendChild(this.createME("menuitem","userChrome.js","uProfMenu.edit(7,'userChrome.js');","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);
        menupopup.appendChild(this.createME("menuitem","policies.json","uProfMenu.edit(6,'policies.json');","uProfMenu_edit"),0);
        // Ende Einbindung von Konfigdateien
    	
    	// Einbindung von abouts
        if (this.abouts.length>0) {
          menupopup.appendChild(document.createXULElement('menuseparator'));
          // 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 Funktionen",this.abouts,"uProfMenu_about",1);
          }
        }
        // Ende Einbindung von abouts
    	
    	// Einbindung von Menü Funktionen
        var submenu = menupopup.appendChild(this.createME("menu","Funktionen",0,0,"submenu-extra2"));
        var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-extra2-items"));
        this.fillMenu("submenu-extra2","submenu-extra2-items", "Funktionen",
          [
            {label:'Addon-Manager', command:"BrowserAddonUI.openAddonsMgr();"},
    		{label:'Einstellungen', command:"openPreferences();"},
    		{label:'about:config', command:"openTrustedLinkIn('about:config', gBrowser.selectedTab.isEmpty ? 'current' : 'tab');"},
    		{label:'about:support', command:"openTrustedLinkIn('about:support', gBrowser.selectedTab.isEmpty ? 'current' : 'tab');"},
    		{label:'Browser-Werkzeuge', command:"var { require } = ChromeUtils.importESModule('resource://devtools/shared/loader/Loader.sys.mjs', {});\
                          var { BrowserToolboxLauncher } = require('resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs');\
                          BrowserToolboxLauncher.init();",
            },
            {label:'Neustart im abgesicherten Modus', command:"safeModeRestart();"},		
    	  ],
          "extra2-directory",7);
        // Ende Einbindung von Menü Funktionen	  
    
        // Einbindung von Menü Verzeichnisse
        var submenu = menupopup.appendChild(this.createME("menu","Verzeichnisse",0,0,"submenu-extra"));
        var submenupopup = submenu.appendChild(this.createME("menupopup",0,0,0,"submenu-extra-items"));
        this.fillMenu("submenu-extra","submenu-extra-items", "Verzeichnisse",
          [
            {label:'Installationsordner', command:"uProfMenu.prefDirOpen('CurProcD')"},
    		{label:'Profilordner', command:"uProfMenu.prefDirOpen('ProfD')"},
            {label:'Icons', command:"uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'Icons');"},
    		{label:'IconsMenü', command:"uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'IconsMenü');"},
    		{label:'IconsHamburger', command:"uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'IconsHamburger');"},
    		{label:'Bookmark-Backups', command:"uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'bookmarkbackups');"},
    		{label:'Addonordner', command:"uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'extensions');"},
    		{label:'Startup-Cacheordner', command:"uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'startupCache');"},
    		{label:'FoxIcons', command:"uProfMenu.dirOpen('C:\\FoxIcons');"}, 
    		{label:'FoxIcons2', command:"uProfMenu.dirOpen('C:\\FoxIcons2');"},
    		{label:'FoxBilder', command:"uProfMenu.dirOpen('C:\\FoxBilder');"},
    		{label:'Download Firefox', command:"uProfMenu.dirOpen('D:\\Download Firefox');"}
    	  ],
          "extra-directory",7);
    	// Ende Einbindung von Menü Verzeichnisse  
        
        menupopup.appendChild(document.createXULElement('menuseparator'));
    	
        // Einbindung von Ordnern
        switch (this.gmOrdner) {
          case 1:
            menupopup.appendChild(this.createME("menuitem","GM-skripty","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'gm_scripts');","uProfMenu_folder"),0);
            break;
          case 2:
            menupopup.appendChild(this.createME("menuitem","USL-skripty","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'UserScriptLoader');","uProfMenu_folder"),0);
            break;
          case 3:
            menupopup.appendChild(this.createME("menuitem","Skripty Scriptish","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfD')+uProfMenu.getDirSep()+'scriptish_scripts');","uProfMenu_folder"),0);
            break;
        }
        if (this.cssOrdner) {
          menupopup.appendChild(this.createME("menuitem","CSS-Ordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'CSS');","uProfMenu_folder"),0);
        }
        menupopup.appendChild(this.createME("menuitem","Ordner chrome","uProfMenu.prefDirOpen('UChrm');","uProfMenu_folder"),0);
        menupopup.appendChild(this.createME("menuitem","Ordner CSSWeb","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'CSSWeb');","uProfMenu_folder"),0);
        menupopup.appendChild(this.createME("menuitem","Ordner CSS","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'css');","uProfMenu_folder"),0);
    	
        //menupopup.appendChild(this.createME("menuitem","Profilordner","uProfMenu.prefDirOpen('ProfD');","uProfMenu_folder"),0);
        
    	//menupopup.appendChild(this.createME("menuitem","Installationsordner","uProfMenu.prefDirOpen('CurProcD');","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","Startup-Cacheordner","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('ProfLD')+uProfMenu.getDirSep()+'startupCache');","uProfMenu_folder"),0);
    	
        menupopup.appendChild(this.createME("menuitem","Ordner CSSAbout","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'CSSAbout');","uProfMenu_folder"),0);
    	menupopup.appendChild(this.createME("menuitem","Ordner Scripte","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'Scripte');","uProfMenu_folder"),0);
    	menupopup.appendChild(this.createME("menuitem","Ordner CSSShadow","uProfMenu.dirOpen(uProfMenu.getPrefDirectoryPath('UChrm')+uProfMenu.getDirSep()+'CSSShadow');","uProfMenu_folder"),0);
    	
    	// Ende Einbindung von Ordnern
    	
        
    	
        // Separator, falls dieser nicht schon durch abouts generiert wurde und weitere Menuepunkte folgen werden
        if (this.abouts.length==0 && (this.showNormalPrefs || typeof(ToolRstartMod) != "undefined")) menupopup.appendChild(document.createXULElement('menuseparator'));
        
    	
    	  
    	  
        // 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);
        // Falls addRestartButton installiert ist, Neustart zur Verfuegung stellen (addRestartButton 1.0.20120105mod erforderlich)
        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
          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 CSS folder
          case 3:
            var Path = this.getPrefDirectoryPath("UChrm") + dSep + "CSS" + dSep + Filename;
            break;
          //Current is CSSWeb folder
          case 4:
            var Path = this.getPrefDirectoryPath("UChrm") + dSep + "CSSWeb" + dSep + Filename;
            break;
          //Current is Sonstige CSS-Dateien folder
          case 5:
            var Path = this.getPrefDirectoryPath("UChrm") + dSep + "CSSAbout" + dSep + Filename;
            break;
          //Current is distribution folder
          case 6:
            var Path = this.getPrefDirectoryPath("CurProcD") + dSep + "distribution" + dSep + Filename;
            break;
    	  //Current is Chrome Directory
          case 7:	  
    	    var Path = this.getPrefDirectoryPath("UChrm") + dSep + Filename;
            break;
    	  //Current is Scripte folder
          case 8:
            var Path = this.getPrefDirectoryPath("UChrm") + dSep + "Scripte" + 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);
        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);
        aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path+uProfMenu.getDirSep()+this.jsSubfolder);
        // 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);
          // 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", "Scripte",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);
        }
      },
    
    
      getCss:function(iType) {
        // Array nimmt Namen der gefundenen css-Dateien auf
        let cssFiles = [];
        // Suchmuster, also die Dateierweiterung css
        let extcss = /\.css$/i;
        let aFolder = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
        if (iType==3) {
          aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path+this.getDirSep()+"CSS");
         } else if (iType==4) {
          aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path+this.getDirSep()+"CSSWeb");
         } else if (iType==5) {
          aFolder.initWithPath(Services.dirsvc.get("UChrm", Ci.nsIFile).path+this.getDirSep()+"CSSAbout");
        }
        // files mit Eintraegen im CSS- bzw. CSSWeb-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);
          // css gefunden -> im Array ablegen
          if (extcss.test(file.leafName)) cssFiles.push(file.leafName);
        }
        if (this.sortScripts) {
          cssFiles.sort(this.stringComparison);
        }
        // Untermenue befuellen
        if (iType==3) {
          this.fillMenu("submenu-css","submenu-css-items","CSS-Dateien",cssFiles,"uProfMenu_css",3);
         } else if (iType==4) {
          this.fillMenu("submenu-cssweb","submenu-cssweb-items","CSSWeb-Dateien",cssFiles,"uProfMenu_css",4);
         } else if (iType==5) {
          this.fillMenu("submenu-cssabout","submenu-cssabout-items","CSSAbout-Dateien",cssFiles,"uProfMenu_css",5);
         }
      },
    
      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--) {
          // Typunterscheidung (userChromeJS-Skript oder about: oder css)
          if (sTyp==0){
            var mitem = this.createME("menuitem",scriptArray[i],"uProfMenu.edit(0,'"+scriptArray[i]+"')",sClass,0);
    		mitem.addEventListener('click', function(event) {
    			uProfMenu.openAtGithub(event,'"+scriptArray[i]+"');
    			event.preventDefault();
    		},true);
    		
            mitem.setAttribute("tooltiptext"," Linksklick: Bearbeiten,\n Mittelklick: https://github.com/.../"+this.cleanFileName(scriptArray[i])+" oeffnen,\n Rechtsklick: Suche auf GitHub");
           } else if (sTyp==1){
            var mitem = this.createME("menuitem",scriptArray[i],"openTrustedLinkIn('"+scriptArray[i]+"','tab')",sClass,0);
           } else if (sTyp==3){
            var mitem = this.createME("menuitem",scriptArray[i],"uProfMenu.edit(3,'"+scriptArray[i]+"')",sClass,0);
           } else if (sTyp==4){
            var mitem = this.createME("menuitem",scriptArray[i],"uProfMenu.edit(4,'"+scriptArray[i]+"')",sClass,0);
           } else if (sTyp==5){
            var mitem = this.createME("menuitem",scriptArray[i],"uProfMenu.edit(5,'"+scriptArray[i]+"')",sClass,0);
           } else if (sTyp==7){
            var mitem = this.createME("menuitem",scriptArray[i].label,scriptArray[i].command,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('class',sClass);
    		m.addEventListener('command', function(event) {
    			Function(sCommand)();
    		}, true);
    		
            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):
          var sUrl = "https://github.com/ardiman/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="+sScript+"&repo=&start_value=1&type=Code";
          openWebLinkIn(sUrl, 'tab');
          document.getElementById("ExtraConfigMenu-popup").hidePopup();
        }
      },
    
      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

    Hier sind es die Zeilen 89 und 567.

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

    • FuchsFan
    • 16. Januar 2025 um 10:20
    Zitat von Sören Hentzschel

    Du musst vor allem ja nur die Scripts teilen, die bei dir die Fehler auslösen, und dazu schreiben, was die Fehlermeldung des jeweiligen Scripts ist.

    Also gut, dann bitte ich um weitere Hilfe. Fangen wir mit dem Script an.

    Beitrag

    RE: Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    […]

    […]

    Gerne :). Ich glaube ihr beide seid die einzigen, die dieses Skript nutzen (mag mich natürlich irren) ^^.

    Hier übrigens die Version des Skripts die keine Sicherheits-Richtlinie mehr verletzt. Bei mir erscheinen nur noch eine zu ignorierende Start-Fehlermeldung und ein "FILE_NOT_FOUND" Fehler. Diese Fehler müssten aber eigentlich auch schon vorher existiert haben.

    (Quelltext, 493 Zeilen)

    BrokenHeart
    11. Januar 2025 um 22:53

    Laut Fehlermeldung betrifft es die Zeilen 87 und 493 (meines ist etwas anders aufgebaut).

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

    • FuchsFan
    • 16. Januar 2025 um 09:39
    Zitat von Sören Hentzschel

    Die Scripts in der fehlerhaften Version zeigen, die dazugehörigen Fehler benennen und korrigieren lassen. ;)

    Ob sechs Semester Studium ausreichen?;)

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • FuchsFan
    • 16. Januar 2025 um 09:33
    Zitat von Mira_Belle

    Mein Appmenü-Skript funktioniert nicht mehr richtig!

    :rolleyes: Meines schon!:/

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

    • FuchsFan
    • 16. Januar 2025 um 09:29
    Zitat von BrokenHeart

    Aber das Skript ist Mist.

    BrokenHeart

    Du bist der Experte, muss ich also so hinnehmen. Das Script verwenden hier doch einige User, und das schon Ewigkeiten.

    Danke, der Fehler tritt nicht mehr auf.

    Und weil wir schon mal dabei sind, fast alle Scripte, die für Nigtly neu angepasst wurden, weisen auch Fehler auf. Ob es nun durch die Anpassung kam, oder schon ursächlich war, kann ich nicht sagen. Was machen wir nun?

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

    • FuchsFan
    • 15. Januar 2025 um 21:41
    Zitat von Mira_Belle

    Welches Skript?

    Bitte!:)

    CSS
    // ==UserScript==
    // @include       chrome://mozapps/content/downloads/unknownContentType.xhtml
    // @charset       UTF-8
    // @version       Fx114+
    
    // ==/UserScript==
    (function () {
      const Cu = Components.utils;
      const { FileUtils } = ChromeUtils.importESModule( 'resource://gre/modules/FileUtils.sys.mjs');
      //if (!window.Services) Cu.import('resource://gre/modules/Services.jsm');
      
      setTimeout(function () {
        saveTo();
      }, 200);
    
      function saveTo() {
        // Config
        const dirArray = [
    	        ['D:\\Download Firefox', 'Download Firefox'],
                ['D:\\Download Firefox\\Dokumente'],
                ['D:\\Download Firefox\\Bilder'],
                ['D:\\Download Firefox\\Software'], 
                ['D:\\Download Firefox\\Ablage'],
                ['D:\\Download Firefox\\Sonstiges'],
                ["C:\\", "C:"],
                ["E:\\", "E:"],
                ];
        const button = document.getElementById('unknownContentType').getButton('cancel');
        const saveTo = button.parentNode.insertBefore(document.createXULElement('button'), button);
        const saveToMenu = saveTo.appendChild(document.createXULElement('menupopup'));
    
        saveTo.classList.toggle('dialog-button');
        saveTo.label = 'Speichern in…';
        saveTo.type = 'menu';
    
    
        const css =`
          hbox.dialog-button-box button.dialog-button menupopup {
            background: gold !important;
            min-width: 220px !important;
            padding: 5px !important;
            margin: 15px 0 0 -62px !important;
            border: 3px solid dodgerblue !important;
        }
            hbox.dialog-button-box button.dialog-button menupopup menuitem{
            appearance: none !important;
            color: blue !important;
            background: #fefefc !important; 
            border: 1px solid silver !important;
            margin-top: 1px !important;
            padding-left: 12px !important;
        }
            hbox.dialog-button-box button.dialog-button menupopup menuitem:hover {
            background: greenyellow !important;
            border: 1px solid red !important;
        }    
            hbox.dialog-button-box button.dialog-button menupopup menuitem.menuitem-iconic label.menu-iconic-text {
            color: blue !important;    
            font-size: 15px !important;
            font-weight: 600 !important;
            margin-left: 12px !important;
            margin-top: 1px !important;
        } `;
    
        const sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
        const uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css));
        sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
    
        dirArray.forEach(function (directory) {
          const [name, dir] = [directory[1], directory[0]];
          const mi = document.createXULElement('menuitem');
          const item = saveToMenu.appendChild(mi);
          item.setAttribute('label', (name || (dir.match(/[^\\/]+$/) || [dir])[0]));
          item.setAttribute('image', 'moz-icon:file:///' + dir + '\\');
          item.setAttribute('class', 'menuitem-iconic');
          item.addEventListener('command', function () {
            const locationtext = document.getElementById('locationtext');
            const pathFile = dir + '\\' + (locationtext ? locationtext.value : document.getElementById('location').value);
            const file = new FileUtils.File(pathFile);
            dialog.mLauncher.saveDestinationAvailable(file);
            dialog.onCancel = function () {};
            close();
          });
        });
      }
    }());
    Alles anzeigen
  • userChrome.js Scripte für den Fuchs (Diskussion)

    • FuchsFan
    • 15. Januar 2025 um 15:02

    In der Konsole wird dieser Fehler angezeigt.

    Das betrifft diese Zeile.

    const button = document.getElementById('unknownContentType').getButton('cancel');

    Was müsste daran geändert werden?

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • FuchsFan
    • 14. Januar 2025 um 17:54

    Bitte mal helfen, im Appmenu-Script gibt es den Eintrag zum öffnen von Downloads. Der eingetragene Wert command reagiert nicht mehr. Wie müsste der jetzt richtig lauten?

    Code
    name: 'Downloads',
    command: "BrowserDownloadsUI();",
    id: 'AMdownloads',

    Danke, hat sich erledigt.

    command:"PlacesCommandHook.showPlacesOrganizer('Downloads');",

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • FuchsFan
    • 14. Januar 2025 um 13:35
    Zitat von Sören Hentzschel
    Zitat von FuchsFan

    aber das bekomme ich nicht gerichtet. :rolleyes:

    Auch hier immer das Gleiche:

    JavaScript
    ExternalAppBtn.setAttribute("onclick", "event.preventDefault();event.stopPropagation();");
    key.setAttribute('oncommand', 'document.getElementById("AMpopup").openPopup();');
    appItem.setAttribute('oncommand', "Appmenu.exec(this.path, this.args);");
    configItem.setAttribute('oncommand', config.command);

    =>

    JavaScript
    ExternalAppBtn.addEventListener('click', event => {
      event.preventDefault();
      event.stopPropagation();
    });
    
    key.addEventListener('command', () => {
      document.getElementById('AMpopup').openPopup();
    });
    
    appItem.addEventListener('command', function () {
      Appmenu.exec(this.path, this.args);
    });
    
    configItem.addEventListener('command', () => {
      Function(config.command)();
    });
    Alles anzeigen

    Nachtrag: Nummer 4 korrigiert, ich hatte mir das Original-Script nicht gut genug angesehen. Das funktioniert tatsächlich etwas anders.

    Ganz herzlichen Dank, funktioniert wieder, muss nur noch alles wieder hübsch machen. :thumbup::)

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • FuchsFan
    • 14. Januar 2025 um 12:10
    Zitat von Sören Hentzschel

    Auch hier immer das Gleiche:

    Danke, Sören Hentzschel , dann starte ich mal den nächsten Versuch. :/

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • FuchsFan
    • 14. Januar 2025 um 11:59
    Zitat von Mira_Belle

    Ich hab's, ich fress 'en Besen! Dharkness FuchsFan

    Danke, aber alle meine Bemühungen scheitern, weil Dein Script nicht identisch ist mit dem meinen.

    Das bei Endor gelistete wäre der Ursprung, aber das bekomme ich nicht gerichtet.:rolleyes:

    userChrome.js/Firefox 129/Appmenu.uc.js at master · Endor8/userChrome.js
    Skripte für die Firefox-Erweiterung userChromeJS. Contribute to Endor8/userChrome.js development by creating an account on GitHub.
    github.com
  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • FuchsFan
    • 13. Januar 2025 um 19:53
    Zitat von Dharkness

    Hallo zusammen,
    sagt mal gibt es schon eine aktualisierte Version von Appmenu.uc.js?

    Dharkness

    Auch an Dich die Bitte, solltest Du eine aktualisierte Version auftreiben, lass es mich wissen. Danke!:)

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • FuchsFan
    • 13. Januar 2025 um 15:07
    Zitat von Mira_Belle

    Mein wichtigstes, das Appmenu-Skript bedauerlicherweise noch nicht.

    Mira_Belle

    Ich verwende es auf eine andere Weise, aber es funktioniert natürlich auch nicht mehr.

    Solltest Du eine Lösung dafür haben, so denke bitte an mich. Danke!

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • FuchsFan
    • 13. Januar 2025 um 11:30
    Zitat von Endor

    Vielen Dank für den Schnipsel.

    Gerne doch, Endor , aber ich bin nur der Nutzer, nicht der Autor. ;)


    BrokenHeart

    Da gab es doch noch ein Problemchen, die Scripte wurden im Submenü zwar angezeigt, konnten aber nicht geöffnet werden.:rolleyes:

    Nochmals alles verglichen und übertragen, es wird alles angezeigt und funktioniert auch. Einstellungen nutze ich so zwar nicht, weil ich es unter Funktionen extra zur Verfügung habe.

    Danke!:thumbup::) Wieder eine Hürde genommen.:)

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • FuchsFan
    • 12. Januar 2025 um 21:58
    Zitat von BrokenHeart

    Alles klar. Nicht hetzen lassen...

    BrokenHeart

    Konnte nicht mehr warten;), deshalb hier das Ergebnis.

    Wenn ich hoffentlich alles richtig übertragen habe, dann öffnen die Einstellungen, die Browser-Werkzeuge, und es gibt einen Neustart. Neustart aber nur, wenn ich dafür den bisherigen Eintrag einsetze.

    Code
    if(this.enableRestart) menupopup.appendChild(this.createME("menuitem","Neustart",
        "Services.appinfo.invalidateCachesOnRestart(); Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit,0);"));

    Damit wird dann auch aus dem Restart-Script alles übernommen.

    Morgen werde ich alles sauber einrichten, dann werden wir weiter sehen.

    Danke, Du hast wieder gute Arbeit gemacht. :thumbup::thumbup::)

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • FuchsFan
    • 12. Januar 2025 um 20:29
    Zitat von BrokenHeart

    Jetzt weiß ich immer noch nicht genau, ob die angesprochenen Punkte bei dir mit der neuen Version funktionieren oder nicht (Browserwerkzeuge)? :/

    Sorry, dass kann ich Dir noch nicht beantworten, denn ich muss erst alles auf mein Script übertragen. Werde mich dann morgen dazu äußern.

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • FuchsFan
    • 12. Januar 2025 um 20:09
    Zitat von BrokenHeart

    Die Einstellungen werden jetzt aufgerufen

    Zitat von BrokenHeart

    Der Neustart wird mit einer Fehlermeldung quittiert

    Ist hier auch so.

    Nur noch mal als Bestätigung, es funktioniert in allen Versionen, nur nicht im neuen Nightly.

    Danke, für Deinen Einsatz. :thumbup:

  • Div. Skripte funktionieren im aktuellem Nightly nicht mehr

    • FuchsFan
    • 12. Januar 2025 um 18:43
    Zitat von Endor

    Beim Script extraconfigmenu.uc.js gibt es noch ein Problem:

    Endor

    Das funktionierte bisher in allen Versionen, nur im neu verpacktem Nightly nicht.

    Das betrifft auch noch den Restart-Button (wenn genutzt wird), und außerdem noch ein eingebautes Menü für den Aufruf der Browser-Werkzeuge. Die Befehle werden so nicht angenommen. Aber was ändern, keine Ahnung.

Unterstütze uns!

Jährlich (2026)

35,3 %

35,3% (273,24 von 775 EUR)

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