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

Beiträge von GermanFreme82

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 20:24

    Ich bin allen sehr dankbar für ihre Mithilfe !

    Es ist halt schwer zu schreiben, was ich hier mache und die Bilder immer zu mache und hochzuladen und jeden Pixel genau zu erklären ist sehr mühsam.

    Es wäre wesentlich einfacher, wenn ich meine privaten Daten nicht ins Netz schleudern müßte dafür einfach ein Video zu machen und ihr macht ein Antwortvideo dazu, wenn etwas flasch gemacht wurde von mir.

    So kann ich eben nicht alles nachvollziehen udn habe erhebliche Probleme zu verstehen, was ihr von mir wollt.

    Das ist keine Einstellung von mir, sondern einfach leider die Tatsache, das ich es nunmal leider nicht verstehe, wenn ich meiner Meinung nach korrekt nach dem vorgehe, was ihr mir schreibt udn das Ergebnis nur die Hälfte, oder etwas völlig falsches ist.

    Ich bin nunmal leider kein Profi wie ihr und daher auf genau Anweisung von euch angewiesen.
    Es kommt mir manchmal echt so vor, als wenn das hier alles Trial and Error ist, wenn ich versuche etwas nachzubauen, was ihr mir vorgebt ;-).

    Es scheint irgendwie irgendwo immer eine Programmzeile zu fehlen, oder es ist in meinem FF etwas drinne, was ihr nicht habt und PENG haut die ganze Anleitung nicht mehr hin ;-). Das soll kein Vorwurf sein, aber per tippen und tippen kann man sowas nicht in erfahrung bringen, wie denn auch, wenn ich nicht weiß, das etwas, was für euch vollkommen selbstverständlich ist, für mich keine Beachtung findet, weil ich nicht weiß, das genau dieses Ding die Fehlerquelle sein könnte.

    Wenn viele Leute an einem großen Thema umherwerkeln, dann sehe ich dann schon längst nicht mehr durch.
    Jeder schreibt irgendwo einen richtigen Fetzen rein um das Problem zu lösen und ich muß mich dann durch 100derte von Seiten lesen und alles mal testen, ob es geht (FF62 Update Scripte-Problem). Das verwirrt einen nur und hilft mir leider nicht.

    Besser wäre es wenn mir jemand anhand meiner Dateien und Dinge hier sagt, was ich wohin schreiben muß, damit ich nicht die Dinge nochmal durchkaue, die andere vor mir schon gemacht haben, die nix bringen und ich mich dann wundere, das nix geht.

    Ich habe jetzt einen neuen Thread gemacht zum Thema FF62 und Update und Scripte gehen nicht mit meinen Dateien udn da sieht man das ich schon einige der Dinge vorbereitet hatte, die ihr mir gesagt habt, aber das Problem läßt sich irgendwie nicht lösen bei mir. Bitte schaut da mal rein => https://www.camp-firefox.de/forum/viewtopi…092371#p1092371

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 20:02
    Zitat von 2002Andreas


    Hier funktionieren die Scripte alle noch.

    Ergo kein Problem der Version 62 wenn man besagte Änderung macht.

    Denk aber dran, lange wird es eh nicht mehr funktionieren mit den Scripten.

    Kann ich verstehen, aber dann mache ich kein Update mehr und die Änderungen verstehe ich nicht und gehen irgendwie nicht bei mir keine Ahnung wieso. Nur die Häfte geht Statusbar bleibt weg und Restart Button ist auch futsch.

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 19:57

    So ich beende nun das Thema, das esd keine Lösung für dieses Problem gibt und das Update auf FF62 mache ich erst, wenn es fertig ist und nicht so halb ausgegoren daherkommt, das man stundenlang hier umherspielen muß um Sachen zu aktivieren, die seid der Erfindung des Feuers laufen sollten.

    Bin stinksauer auf FF !

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 19:47

    Ich will das Update nicht mehr wie geht das wieder weg !

    Ich brauch die ganzen Passwörter bitte wo die stecken und dann kill ich den hier mit meinem alten Backup.

    Bitte angaben von Passwörter zusenden ich dreh sonst durch hier unbrauchbares Programm.

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 19:39

    Die Statusleiste ist immer noch weg die brauch ich aber.

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 19:39

    [attachment=1]2018.09.09 Bild 03.png[/attachment]

    Code
    // userChrome.js
    userChrome.ignoreCache = true;
    userChrome.import("*", "UChrm");
    // Scriptcache deaktivieren
    userChrome.ignoreCache = true;

    ..........................................................................

    [attachment=0]cgffgtzghhjzuhmnjnb.png[/attachment]

    Code
    // config-prefs.js
    pref("general.config.obscure_value", 0);
    pref("general.config.filename", "config.js");
    pref("general.config.sandbox_enabled", false);

    Bilder

    • cgffgtzghhjzuhmnjnb.png
      • 3,85 kB
      • 223 × 111
    • 2018.09.09 Bild 03.png
      • 22,14 kB
      • 625 × 343
  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 19:36

    Es fehlt meine Statusleiste und die Buttons darin und mein Neustart Button.

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 19:33
    Code
    // config-prefs.js
    pref("general.config.obscure_value", 0);
    pref("general.config.filename", "config.js");
    pref("general.config.sandbox_enabled", false);

    gemacht !

    keine Änderung Scripte immer noch weg !

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 19:31
    Code
    // userChrome.js
    userChrome.ignoreCache = true;
    userChrome.import("*", "UChrm");
    // Scriptcache deaktivieren
    userChrome.ignoreCache = true;

    gemacht !

    keine Änderung !

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 19:28

    Keine Ahnung Bahnhof Zug fährt ab ich verstehs nicht.

    Bitte sag mir doch einfach in welche JS ich was wohin schreiben muß und dann mach ich das sofort.
    Den Rest was dir da schreiben verstehe ich nicht sorry.

    Die reden von irgendeinem StarupCache den ich nicht finde und irgendwas von JS irgendwohin was ich nicht verstehe.

    Was muß ich ändern in meinem FF62 damit ALLE meien Scripte wieder gehen (Statusbar usw.).

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 19:21
    Zitat von 2002Andreas


    Bei mir gehen alle Scripte in Fx 62 - 64 und in allen meinen portablen Versionen.

    Kannst du mir bitte kurz sagen, was ich dafür machen muß, damit meine Scripte wieder gehen ?

    Copy&Paste oder sowas und was irgendwo reinschreiben ... ??

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 19:18
    Zitat von 2002Andreas


    Einfach ausgedrückt....weil Mozilla das so will :wink:

    Und du hast das Update nicht gemacht, weil bei dir gehts ja noch ODER ?

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 19:16

    Wieso sind im FF62 keine Scripte mehr erlaubt ?

    Bei mir ist alles im Eimer nach dem Update auf FF62 gerade eben !!!

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 19:14

    Ein neues Problem ist da !

    Ich hab eben das Update auf FF62 gemacht und nun gehen keine Scripte mehr bei mir was nun ?

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 19:07
    Zitat von 2002Andreas


    Du benutzt das Script aus Beitrag Nr. 5 !?

    Erstell dir doch mal ein neues Profil und teste nur mit dem Script. Evtl. hat dein Profil ja einen Fehler.

    Okay werde ich sofort versuchen das mit dem Profil, aber was brauch ich dann alles,
    damit auch Scripte gehen im neuen Profil ?

    Ich brauch dafür eine Schritt für Schritt Anleitung, sonst kann ich das nicht.

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 19:01

    Und wieso geht das bei mir nicht, wenn ich genau das selbe mache, was ihr mir sagt ?

    Der Fehler muß doch zu finden sein ! ;)

    Welche Infos benötigt ihr denn um dem Fehler auf die Schliche zu kommen ?
    Bitte fragt einfach und ich poste was ich posten kann, damit das Elend endlich ein Ende hat ;-).

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 18:53

    vorher:
    .
    [attachment=2]01.jpg[/attachment]

    nacher:
    .
    [attachment=1]nacher.png[/attachment]

    Ergebnis:
    .
    [attachment=0]ergebnis.png[/attachment]
    .
    Es funktioniert leider nicht, denn die Tableiste ist eine Zeile zu weit unten und müßte über der Statusleiste sitzen und nicht drunter. Und was jetzt, weil so kann das auf keinen Fall so bleiben?

    Bilder

    • ergebnis.png
      • 14,9 kB
      • 1.920 × 61
    • nacher.png
      • 9,33 kB
      • 586 × 167
    • 01.jpg
      • 40,92 kB
      • 584 × 339
  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 9. September 2018 um 18:34

    Hallo zusammen !

    Ich hab nun wieder Zeit um mich nochmal um das Problem zu kümmern mit der Tableiste.

    Wie kann ich denn andere Scripte deaktivieren ?
    Was sollte ich denn genau machen um den Fehler zu finden ?

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 30. Juli 2018 um 18:14

    Ich hab eben mal "ffc-add-statusbar.uc.js" rausgeworfen und mir wird trotzdem die Statusbar unten angezeigt ??????

    Wie kann ich den ungefährlich, also ohne mein FF zu verballern einzeln prüfen, was falsch laufen könnte ?

    Ich könnte ja versuchen einzelne Dateien zu löschen, die ungefährlich sidn für mein FF, aber ich weiß nicht welche.
    Ein Backup hab ich schon gemacht vorsichtshalber.

    Es tut mir übrigens leid, falls ich etwas gereizt rüberkommen sollte, aber habt bitte Nachsicht mit mir, denn ich hab 31 GRAD in der Bude und meine dämlichen Nachbarn machen Party seid 2 Stunden.

  • Firefox 61 Tableiste unten anzeigen ?

    • GermanFreme82
    • 30. Juli 2018 um 18:09

    So das sind alle Inhalt der einzelnen Scripte und eins davon macht zicken irgendwie.

    ffc-add-statusbar.uc.js

    Code
    (function() {	
    
    
    let tb = document.createElement('toolbar');
    tb.id = 'user-statusbar';
    tb.setAttribute('customizable', 'true');
    tb.setAttribute('mode', 'icons');
    tb.setAttribute('context', 'toolbar-context-menu');
    
    
    let vb  = document.createElement('vbox');
    vb.id = 'user-statusbar-vbox';
    let browserBottombox = document.getElementById('browser-bottombox');
    browserBottombox.parentNode.insertBefore(vb, browserBottombox);
    vb.appendChild(tb);
    
    
    CustomizableUI.registerArea('user-statusbar', {legacy: true});
    
    
    })();
    Alles anzeigen


    .
    ffc-appMenu-restart.uc.js

    Code
    (function() {
    
    
    let menuitem = document.createElement('toolbarbutton');
    menuitem.id = 'fp-appMenu-restart-button';
    menuitem.classList.add('subviewbutton', 'subviewbutton-iconic');
    menuitem.setAttribute('label' , 'Neustart');
    menuitem.setAttribute('tooltiptext' , 'Neustart');
    menuitem.style.listStyleImage= 'url("chrome://browser/skin/reload.svg")';
    menuitem.setAttribute('oncommand' , "Services.appinfo.invalidateCachesOnRestart() || BrowserUtils.restartApplication();");
    let refItem = document.getElementById('appMenu-quit-button');
    refItem.parentNode.insertBefore(menuitem, refItem);
    
    
    })();
    Alles anzeigen

    ffc-button-customize.uc.js

    Code
    (function() {
    
    
    try {
    	Components.utils.import("resource:///modules/CustomizableUI.jsm");
    	CustomizableUI.createWidget({
    		id: "uc-customize",
    		defaultArea: CustomizableUI.AREA_NAVBAR,
    		removable: true,
    		label: "Anpassen",
    		tooltiptext: "Anpassen",
    		onClick: function() {
    			gCustomizeMode.enter();
    		},
    		onCreated: function(aNode) {
    			aNode.style.listStyleImage = 'url(chrome://browser/skin/customize.svg)';
    			return aNode;
    		}
    	});
    } catch (e) {
    	Components.utils.reportError(e);
    };
    
    
    })();
    Alles anzeigen

    ffc-button-exit.uc.js

    Code
    (function() {
    
    
    try {
    	Components.utils.import("resource:///modules/CustomizableUI.jsm");
    	CustomizableUI.createWidget({
    		id: "uc-quit",
    		defaultArea: CustomizableUI.AREA_NAVBAR,
    		removable: true,
    		label: "Beenden",
    		tooltiptext: "Beenden",
    		onClick: function() {
    			goQuitApplication();
    		},
    		onCreated: function(aNode) {
    			aNode.style.listStyleImage = 'url(chrome://browser/skin/quit.svg)';
    			return aNode;
    		}
    
    	});
    } catch (e) {
    	Components.utils.reportError(e);
    };
    
    
    })();
    Alles anzeigen

    ffc-button-restart.uc.js

    Code
    (function() {
    
    
    try {
    	Components.utils.import("resource:///modules/CustomizableUI.jsm");
    	CustomizableUI.createWidget({
    		id: "uc-restart",
    		defaultArea: CustomizableUI.AREA_NAVBAR,
    		removable: true,
    		label: "Neustart",
    		tooltiptext: "Neustart",
    		onClick: function() {
    			Services.appinfo.invalidateCachesOnRestart() || BrowserUtils.restartApplication();
    		},
    		onCreated: function(aNode) {
    			aNode.style.listStyleImage = 'url("chrome://browser/skin/reload.svg")';
    			return aNode;
    		}
    	});
    } catch (e) {
    	Components.utils.reportError(e);
    };
    
    
    })();
    Alles anzeigen

    ffc-menu-restart.uc.js

    Code
    (function() {
    
    
    let menuitem = document.createElement('menuitem');
    menuitem.id = 'fp_menu_restart';
    menuitem.setAttribute('label' , 'Neustart');
    menuitem.setAttribute('oncommand' , "Services.appinfo.invalidateCachesOnRestart() || BrowserUtils.restartApplication();");
    let refItem = document.getElementById('menu_FileQuitItem');
    refItem.parentNode.insertBefore(menuitem, refItem);
    
    
    })();
    Alles anzeigen

    HideTabbarWithOneTab.uc.js

    Code
    //  HideTabbarWithOneTab.uc.js
    //  v. 0.2
    
    
    (function() {
      if (!window.gBrowser)
        return;
      let tabbar = document.getElementById("TabsToolbar");
      function showHideTabbar() {
        tabbar.collapsed = (gBrowser.visibleTabs.length == 1);
      };
      setTimeout(function() {
        showHideTabbar();
      }, 0);
      let observer = new MutationObserver(showHideTabbar);
      observer.observe(document.getElementById("tabbrowser-tabs"), {childList: true});
    })();
    Alles anzeigen

    LoadingBarGrün.uc.js

    CSS
    /* LoadingBar.uc.js */
    
    
    (function(){
    //Location Bar Enhancer5.1;Loading Bar0.3.0
    	var cssStr = (function(){/*
    			#urlbar {
    				background-image: -moz-repeating-linear-gradient(top, rgba(255,255,255,0), rgba(255,255,255,0) 12px, rgba(255,255,255,1) 12px, rgba(255,255,255,1) 12px), -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(74,250,30,.7) 100%);
    				background-size:0 0;
    				background-repeat:repeat-x, no-repeat;
    				transition: background-size 350ms ease 0s !important;
    			}
    			#urlbar:not([style="background-size: 0% 100%;"]) {
    				animation: progress-bar-stripes 2s linear infinite;
    			}
    			@-moz-keyframes progress-bar-stripes {
    				from {
    					background-position: 0, 0;
    				}
    				to {
    					background-position: 51px 0, 0;
    				}
    			}
    	*/}).toString().replace(/^.+\s|.+$/,"");
    
    	var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\"");
    	var mainW = document.getElementById("main-window");
    	document.insertBefore(style, mainW);
    
    
    	function main(window) {
    	  var {document, gBrowser} = window;
    	  function $(id) { return document.getElementById(id) };
    	  var urlbar = $("urlbar");
    	  let pageProgress = 0;
    	  let async = makeWindowHelpers(window).async;
    	  var LoadingBar = {
    		listener: {
    		  onChangeTab: function(e) {
    			urlbar.style.backgroundSize = '0% 100%';
    			pageProgress = 0;
    		  },
    		  onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) {
    			if (gBrowser.contentDocument === aBrowser.contentDocument) {
    				var val = (curTotalProgress-1)/(maxTotalProgress-1);
    				pageProgress = val;
    				urlbar.style.backgroundSize = (100*val) + '% 100%';
    				if (val > 0.9)
    				  async(function() {
    					if (pageProgress > 0.95)
    						urlbar.style.backgroundSize = '100% 100%';
    				}, 1000);
    			}
    		  },
    		  onStateChange: function() {
    			if (pageProgress > 0.95){
    				async(function() {
    					urlbar.style.backgroundSize = '0% 100%';
    					pageProgress = 0;
    				}, 1000);
    			}else{
    				urlbar.style.backgroundSize = '0% 100%';
    			}
    		  }
    		}
    	  };
    
    
    	  gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
    	  gBrowser.addTabsProgressListener(LoadingBar.listener);
    
    
    	  unload(function() {
    		gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
    
    
    		gBrowser.removeTabsProgressListener(LoadingBar.listener);
    	  }, window);
    	}
    
    
    
    
    
    
    	watchWindows(main, "navigator:browser");
    
    
    	function runOnLoad(window, callback, winType) {
    	  window.addEventListener("load", function() {
    		window.removeEventListener("load", arguments.callee, false);
    
    
    		if (window.document.documentElement.getAttribute("windowtype") == winType)
    		  callback(window);
    	  }, false);
    	}
    
    
    	function runOnWindows(callback, winType) {
    	  function watcher(window) {
    		try {
    		  callback(window);
    		}
    		catch(ex) {}
    	  }
    
    
    	  let browserWindows = Services.wm.getEnumerator(winType);
    	  while (browserWindows.hasMoreElements()) {
    		let browserWindow = browserWindows.getNext();
    		if (browserWindow.document.readyState == "complete")
    		  watcher(browserWindow);
    		else
    		  runOnLoad(browserWindow, watcher, winType);
    	  }
    	}
    
    
    	function watchWindows(callback, winType) {
    	  function watcher(window) {
    		try {
    		  callback(window);
    		}
    		catch(ex) {}
    	  }
    
    
    	  runOnWindows(callback, winType);
    
    
    	  function windowWatcher(subject, topic) {
    		if (topic == "domwindowopened")
    		  runOnLoad(subject, watcher, winType);
    	  }
    	  Services.ww.registerNotification(windowWatcher);
    
    
    	  unload(function() { Services.ww.unregisterNotification(windowWatcher) });
    	}
    
    
    	function unload(callback, container) {
    	  let unloaders = unload.unloaders;
    	  if (unloaders == null)
    		unloaders = unload.unloaders = [];
    
    
    	  if (callback == null) {
    		unloaders.slice().forEach(function(unloader) { unloader() });
    		unloaders.length = 0;
    		return null;
    	  }
    
    
    	  if (container != null) {
    		container.addEventListener("unload", removeUnloader, false);
    
    
    		let origCallback = callback;
    		callback = function() {
    		  container.removeEventListener("unload", removeUnloader, false);
    		  origCallback();
    		}
    	  }
    
    
    	  function unloader() {
    		try {
    		  callback();
    		}
    		catch(ex) {}
    	  }
    	  unloaders.push(unloader);
    
    
    
    
    	function removeUnloader() {
    		let index = unloaders.indexOf(unloader);
    		if (index != -1)
    		  unloaders.splice(index, 1);
    	  }
    	  return removeUnloader;
    	}
    
    	function makeWindowHelpers(window) {
    	  let {clearTimeout, setTimeout} = window;
    
    
    	  function async(callback, delay) {
    		delay = delay || 0;
    		let timer = setTimeout(function() {
    		  stopTimer();
    		  callback();
    		}, delay);
    
    
    		function stopTimer() {
    		  if (timer == null)
    			return;
    		  clearTimeout(timer);
    		  timer = null;
    		}
    	  }
    
    
    	  return {
    		async: async,
    	  };
    	}
    
    
    })();
    Alles anzeigen

    TabProtect_mod.uc.js

    Code
    // ==UserScript==
    // @name           tabProtect_mod2.uc.js
    // @namespace      http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description    Tab schützen
    // @include        main
    // @author         Alice0775
    // @Note           Tabulator wird nicht unterstützt
    // @Note           Beim Wechsel in den Privaten Modus über Tableiste, kann es beim
    // @Note           Speichern und Wiederherstellen der Browsersitzung Probleme geben
    // @compatibility  60
    // @version        2018/06/21 19:50 workaround regression
    // @version        2018/06/21 19:40 fix restore session if *.restore_on_demand is enabled
    // @version        2018/06/10 00:00 workaround restore session
    // @version        2018/05/23 00:00 Fixed typo(status is undeled when unprotect)
    // @version        2018/05/12 15:30 workaround restore session for all window
    // @version        2018/05/06 14:00 workaround for tab move
    // @version        2018/05/04 12:00 cleanup for 60
    // @version        2018/05/04 23:00 for 60
    // ==/UserScript==
    
    
    var tabProtect = {
      debug: function(aMsg){
              Cc["@mozilla.org/consoleservice;1"]
                .getService(Ci.nsIConsoleService)
                .logStringMessage(aMsg.toString());
      },
    
    
      sessionStore: {
        get ss() {
          try { 
            return Components.classes["@mozilla.org/browser/sessionstore;1"].
                                   getService(Components.interfaces.nsISessionStore)
          } catch(e) {
            return;
          }
        },
    
    
        getTabValue : function(aTab, aKey) {
          if (typeof SessionStore.getCustomTabValue == "function")
            return SessionStore.getCustomTabValue(aTab, aKey);
          else
            return this.ss.getTabValue(aTab, aKey);
        },
    
    
        setTabValue : function(aTab, aKey, aValue) {
          if (typeof SessionStore.setCustomTabValue == "function")
            return SessionStore.setCustomTabValue(aTab, aKey, aValue);
          else
            return this.ss.setTabValue(aTab, aKey, aValue);
    
    
        },
        deleteTabValue : function(aTab, aKey) {
          if (typeof SessionStore.deleteCustomTabValue == "function")
            return SessionStore.deleteCustomTabValue(aTab, aKey);
          else
            return this.ss.deleteTabValue(aTab, aKey);
        }
      },
    
    
      init: function(){
        this.tabContextMenu();
    
    
        //tabbrowser.xml ersetzen
        gBrowser.removeTab_org = gBrowser.removeTab;
        gBrowser.removeTab = function(aTab, aParams) {
          if (aTab.localName != "tab")
            aTab = this.selectedTab;
          if (aTab.hasAttribute("tabProtect"))
            return;
          gBrowser.removeTab_org(aTab, aParams);
        }
    
    
        // CSS Übernehmen
        var stack = document.getAnonymousElementByAttribute(
                                gBrowser.tabContainer.firstChild, "class", "tab-stack");
          var style = `
          .tab-close-button[hidden='true'] image {
            width: 0px;
          }
          .tab-icon-protect{
            margin-top: 10px; /*Notwendige Anpassung*/
            margin-left: -6px; /*Notwendige Anpassung*/
            list-style-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQUlEQVQ4jWNgGAXDADASUvDvOsN/fPJMlLqAhRhFTJqo/H/XKXQBsoFEuQDDVnIMQPcGXJxYA3C5hiwvUOwCZAAAlRcK7m+YgB4AAAAASUVORK5CYII=');
          }
          .tab-icon-protect[hidden='true'] {
            display: none;
          }
          `;
        var sspi = document.createProcessingInstruction(
          'xml-stylesheet',
          'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"'
        );
        document.insertBefore(sspi, document.documentElement);
        sspi.getAttribute = function(name) {
        return document.documentElement.getAttribute(name);
        };
    
    
        this.restoreAll(0);
        gBrowser.tabContainer.addEventListener('TabMove', tabProtect.TabMove, false);
        gBrowser.tabContainer.addEventListener('SSTabRestoring', tabProtect.restore,false);
        window.addEventListener('unload',function(){ tabProtect.uninit();},false)
    
    
      },
    
    
      restoreAll: function(delay = 0) {
        var that = this;
        setTimeout(init, delay, 0);
        function init(i){
          if(i < gBrowser.tabs.length){
            var aTab = gBrowser.tabs[i];
            that.restoreForTab(aTab);
            i++;
            arguments.callee(i);
          }else{
          }
        }
      },
    
    
      uninit: function(){
        window.removeEventListener('unload',function(){ tabProtect.uninit();},false)
        gBrowser.tabContainer.removeEventListener('SSTabRestoring', tabProtect.restore,false);
        gBrowser.tabContainer.removeEventListener('TabMove', tabProtect.TabMove, false);
      },
    
    
    
    
      TabMove: function(aEvent){
        var aTab = aEvent.target;
        gBrowser.protectTabIcon(aTab);
      },
    
    
      tabContextMenu: function(){
        //tab context menu
        var tabContext = gBrowser.tabContainer.contextMenu;
        var menuitem = this.tabProtectMenu
                     = tabContext.appendChild(
                            document.createElement("menuitem"));
        menuitem.id = "tabProtect";
        menuitem.setAttribute("type", "checkbox");
        menuitem.setAttribute("label", "Tab schützen");
        menuitem.setAttribute("accesskey", "z");
        menuitem.setAttribute("oncommand","tabProtect.toggle(event);");
        tabContext.addEventListener('popupshowing',function(event){tabProtect.setCheckbox(event);},false);
      },
    
    
      restore: function(event){
        tabProtect.restoreAll(0);
      },
    
    
      restoreForTab: function(aTab){
        var retrievedData = this.sessionStore.getTabValue(aTab, "tabProtect") == "true";
        if(retrievedData){
          aTab.setAttribute('tabProtect',true);
          var closeButton = document.getAnonymousElementByAttribute(
                                 aTab, "anonid", "close-button");
          closeButton.setAttribute('hidden',true);
        }
        gBrowser.protectTabIcon(aTab);
      },
    
    
      toggle: function(event){
        var aTab = TabContextMenu.contextTab;
        if( !aTab || aTab.localName !='tab') return;
        gBrowser.protectTab(aTab);
      },
    
    
      toggleProtectSelectedTabs: function(){
        var tabs = MultipleTabService.getSelectedTabs();
        gBrowser.protectTab(tabs[0]);
        for (var i= 1; i < tabs.length; i++){
            gBrowser.protectTab(tabs[i]);
        }
      },
    
    
      setCheckbox: function(event){
        var menuitem = this.tabProtectMenu;
        var aTab = TabContextMenu.contextTab;
        if( !aTab || aTab.localName !='tab'){
          menuitem.setAttribute('hidden',true);
          return;
        }
        menuitem.setAttribute('hidden',false);
        if(aTab.hasAttribute('tabProtect') && aTab.getAttribute('tabProtect')){
          menuitem.setAttribute('checked', true);
        }else{
          menuitem.setAttribute('checked', false);
        }
      }
    }
    if(!('TM_init' in window)) {
      gBrowser.isProtectTab = function (aTab){
        return aTab.hasAttribute("tabProtect");
      }
    
    
      gBrowser.protectTab = function (aTab){
        if ( aTab.hasAttribute("tabProtect") ){
          aTab.removeAttribute("tabProtect");
          try {
            tabProtect.sessionStore.deleteTabValue(aTab, "tabProtect");
          } catch(e) {}
          var isProtected = false;
        } else {
          aTab.setAttribute("tabProtect", "true");
          tabProtect.sessionStore.setTabValue(aTab, "tabProtect", "true");
          var isProtected = true;
        }
        this.protectTabIcon(aTab);
        return isProtected;
      }
    
    
      gBrowser.protectTabIcon = function (aTab){
        const kXULNS =
                 "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
        var closeButton = document.getAnonymousElementByAttribute(
                        aTab, "anonid", "close-button");
        var image = document.getAnonymousElementByAttribute(
                                 aTab, "class", "tab-icon-protect");
        if ( aTab.hasAttribute("tabProtect") ){
          closeButton.setAttribute('hidden',true);
          if(!image){
            var stack = document.getAnonymousElementByAttribute(
                                   aTab, "class", "tab-stack");
            var image = document.createElementNS(kXULNS,'image');
            image.setAttribute('class','tab-icon-protect');
            image.setAttribute('left',0);
            image.setAttribute('top',0);
            if(stack) stack.appendChild(image);
          }
          aTab.setAttribute('class',aTab.getAttribute('class')+' tabProtect');
          image.removeAttribute('hidden');
        }else{
          closeButton.setAttribute('hidden',false);
          if(image){
            image.setAttribute('hidden', true);
          }
          aTab.setAttribute('class',aTab.getAttribute('class').replace(/\stabProtect/g,''));
        }
      }
    }
    
    
    if(!('TM_init' in window)) tabProtect.init();
    Alles anzeigen

    userChrome.js

    Code
    // userChrome.js
    userChrome.ignoreCache = true;
    userChrome.import("*", "UChrm");

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