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 blockiert Javascript PopUp Fenster

    • GermanFreme82
    • 18. September 2019 um 16:22
    Zitat von milupo

    Der abgesicherte Modus deaktiviert alle Erweiterungen und die Hardwarebeschleunigung. Deaktiviere mal die Hardwarebeschleunigung in den Einstellungen von Firefox. Starte Firefox sicherheitshalber neu.

    Ansonsten hätte ich auch nur den Gedanken, dass es es eine Erweiterung wie uBlock ist, die durch Regeln blockiert. Wenn die betreffende Erweiterung im abgesicherten Modus deaktiviert ist, sind natürlich auch die Regeln unwirksam.

    Also ich hab den Safe-Mode probiert da geht alles einwandfrei.

    Alle Erw. im Normalbetrieb FF69 sind abgestellt und das Problem ist da.

    Die Hardwarebeschleunigung ist bei mir aus.

  • Firefox blockiert Javascript PopUp Fenster

    • GermanFreme82
    • 18. September 2019 um 16:15

    So ich hab nun alle Erw. durchprobiert und nach dem alle abgestellt waren, war das Problem immer noch vorhanden.

    Es hat demnach nichts mit meinem Erw. zutun.

    Wie gesagt, den "Safe-mode" hab ich bereits probiert und da geht alles und da wird mir das Bild auch im neues Fenster geöffnet.

    Was kann ich als nächsten machen, um den Fehler zu finden ?

  • Firefox blockiert Javascript PopUp Fenster

    • GermanFreme82
    • 18. September 2019 um 15:59
    Zitat von milupo

    Du musst schon selbst deine Erweiterungen testen. Wenn es viele sind, deaktiviere erst die Hälfte, vielleicht ist das Problem dann schon behoben und du musst dann nur noch aus der Hälfte der Erweiterungen die schuldige herausfinden. Wenn das Problem nach der Deaktivierung der ersten Hälfte weiterhin besteht, musst du dann die zweite Hälfte nach der schuldigen durchsuchen. Auf jeden Fall brauchst du so immer nur die Hälfte der Erweiterungen durchsuchen.

    Hmm ok na dann mal schaun, dachte es geht einfache rund man erkennt schon deutlich das Problem.
    Melde mich, wenn ich das mit den Erw. gemacht habe.

  • Firefox blockiert Javascript PopUp Fenster

    • GermanFreme82
    • 18. September 2019 um 15:59

    Das sind meine Erw. die ich aktiviert habe zur Zeit.

    Der "Sctrict Popup Blocker" blockiert nur unerwünschte popups, die von alleine kommen, also keine Fenster.

    Bilder

    • 2019.09.18 Bild 05.png
      • 38,57 kB
      • 669 × 719
    • 2019.09.18 Bild 06.png
      • 40,39 kB
      • 670 × 683
    • 2019.09.18 Bild 07.png
      • 36,14 kB
      • 666 × 685
    • 2019.09.18 Bild 08.png
      • 39,47 kB
      • 670 × 686
    • 2019.09.18 Bild 09.png
      • 42,41 kB
      • 667 × 682
    • 2019.09.18 Bild 10.png
      • 35,08 kB
      • 668 × 682
    • 2019.09.18 Bild 11.png
      • 31,71 kB
      • 669 × 505
  • Firefox blockiert Javascript PopUp Fenster

    • GermanFreme82
    • 18. September 2019 um 15:53
    Zitat von .DeJaVu

    Starte den Logger

    https://github.com/gorhill/uBlock/wiki/The-logger

    Und alles, was rot ist, wird blockiert, da dürfte dann auch das Bild mit bei sein.

    Mit der Maus in jene Zeile klicken, dann bekommst du den Filter angezeigt, der Schuld hat.

    Der logger bringt mir leider nix, denn ich bekomme ja keinen neuen TAB, wie du, sondern ein eines Fenster.

    Habs trotzdem versucht und hier siehst du was er ausspuckt.

    Bilder

    • 2019.09.18 Bild 04.png
      • 71,85 kB
      • 1.834 × 853
  • Firefox blockiert Javascript PopUp Fenster

    • GermanFreme82
    • 18. September 2019 um 15:50

    So hab jetzt den "safe-mode" probiert und dort geht alles einwandfrei !

    Wie komme ich jetzt dme Problem auf die Schliche und wie kann ich auch alle Erw. zeigen, die ich im FF69 habe, damit ihr einen besseren Einblick bekommt ?

  • Firefox blockiert Javascript PopUp Fenster

    • GermanFreme82
    • 18. September 2019 um 15:43

    Hab uBlock abgestellt und wieder an, aber ändern tut sich da nix und das Fenster bleibt weiß und leer.

  • Firefox blockiert Javascript PopUp Fenster

    • GermanFreme82
    • 18. September 2019 um 15:40
    Zitat von .DeJaVu

    Bei mir öffnet sich ein neuer Tab mit großem Bild, klick ins Bild schliesst den Tab wieder, zurück zur Webseite. Und das tut es auch genau so mit aktiviertem uBlock. Entweder ist es uBlock, da hilft nur testweise deaktivieren, oder eine Firefox-Einstellung bei dir. (safe-mode, neues Profil, kennst du ja)

    Merkwürdig bei mir geht gleich ein Extra Fenster auf und nicht ein TAB ?
    Ich schalt mal uBlock aus und versuchs nochmal.

  • Firefox blockiert Javascript PopUp Fenster

    • GermanFreme82
    • 18. September 2019 um 15:34

    Hallo liebe Fuchsgemeinde ;) !

    Bisher wußte ihr mir mit kleinen Tricks zu helfen, aber es geht mir einerseits ziemlich auf den Docht und andererseits ist es merkwürdig, das Firefox Scripte in PopUp Fenstern blockiert.

    Ich meine damit Websites wie zum Bsp,: http://chloemoretz.org/photographs/di…php?pos=-106540

    Wenn ich dort auf das Bild klicke geht ein PopUp auf und man sollte dort das Bild in groß sehen, eigentlich.

    Bei mir geht das Fenster zwar auf, bleibt allerdings komplett weiß.

    Es ist wohl eine Javascript, was da blockiert wird, denn ganz links unten steht auch was von JavaScript, wenn man das PopUp schließen will.

    Ich hab meine Erweiterungen schon geprüft und außer NoScript und uBlock Origin fällt mir nichts ein, was sowas blocken könnte.

    Könnt ihr mir bitte dabei helfen herauszufinden, was die Blockade ist dabei und wie man die abschalten kann ?

    Bilder

    • 01.jpg
      • 68,08 kB
      • 1.231 × 840
  • Firefox 69 Lesezeichen Ordner Farbe ändern von grau auf orange

    • GermanFreme82
    • 11. September 2019 um 14:38

    Ich hab das Script eben probiert und es funktioniert einwandfrei.

    Was es alles gibt wow !

    Vielen Dank für diesen coolen Beitrag !

    CSS
    @-moz-document url-prefix(chrome://browser/content/browser.xhtml),
    url("chrome://browser/content/places/places.xhtml") {
        
        .bookmark-item[container="true"]{
    list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAd5JREFUeNqMU79rFUEQ/vbuodFEEkzAImBpkUabFP4ldpaJhZXYm/RiZWsv/hkWFglBUyTIgyAIIfgIRjHv3r39MePM7N3LcbxAFvZ2b2bn22/mm3XMjF+HL3YW7q28YSIw8mBKoBihhhgCsoORot9d3/ywg3YowMXwNde/PzGnk2vn6PitrT+/PGeNaecg4+qNY3D43vy16A5wDDd4Aqg/ngmrjl/GoN0U5V1QquHQG3q+TPDVhVwyBffcmQGJmSVfyZk7R3SngI4JKfwDJ2+05zIg8gbiereTZRHhJ5KCMOwDFLjhoBTn2g0ghagfKeIYJDPFyibJVBtTREwq60SpYvh5++PpwatHsxSm9QRLSQpEVSd7/TYJUb49TX7gztpjjEffnoVw66+Ytovs14Yp7HaKmUXeX9rKUoMoLNW3srqI5fWn8JejrVkK0QcrkFLOgS39yoKUQe292WJ1guUHG8K2o8K00oO1BTvXoW4yasclUTgZYJY9aFNfAThX5CZRmczAV52oAPoupHhWRIUUAOoyUIlYVaAa/VbLbyiZUiyFbjQFNwiZQSGl4IDy9sO5Wrty0QLKhdZPxmgGcDo8ejn+c/6eiK9poz15Kw7Dr/vN/z6W7q++091/AQYA5mZ8GYJ9K0AAAAAASUVORK5CYII=") !important;
        }
    } 
    
    
    @-moz-document url("chrome://browser/content/places/bookmarksSidebar.xul") {
    
    treechildren::-moz-tree-image(container) {
    list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAd5JREFUeNqMU79rFUEQ/vbuodFEEkzAImBpkUabFP4ldpaJhZXYm/RiZWsv/hkWFglBUyTIgyAIIfgIRjHv3r39MePM7N3LcbxAFvZ2b2bn22/mm3XMjF+HL3YW7q28YSIw8mBKoBihhhgCsoORot9d3/ywg3YowMXwNde/PzGnk2vn6PitrT+/PGeNaecg4+qNY3D43vy16A5wDDd4Aqg/ngmrjl/GoN0U5V1QquHQG3q+TPDVhVwyBffcmQGJmSVfyZk7R3SngI4JKfwDJ2+05zIg8gbiereTZRHhJ5KCMOwDFLjhoBTn2g0ghagfKeIYJDPFyibJVBtTREwq60SpYvh5++PpwatHsxSm9QRLSQpEVSd7/TYJUb49TX7gztpjjEffnoVw66+Ytovs14Yp7HaKmUXeX9rKUoMoLNW3srqI5fWn8JejrVkK0QcrkFLOgS39yoKUQe292WJ1guUHG8K2o8K00oO1BTvXoW4yasclUTgZYJY9aFNfAThX5CZRmczAV52oAPoupHhWRIUUAOoyUIlYVaAa/VbLbyiZUiyFbjQFNwiZQSGl4IDy9sO5Wrty0QLKhdZPxmgGcDo8ejn+c/6eiK9poz15Kw7Dr/vN/z6W7q++091/AQYA5mZ8GYJ9K0AAAAAASUVORK5CYII=") !important;}
    
    }
    Alles anzeigen
  • [Script] TabProtectmod.uc.js - Firefox 69 Hilfe gesucht !

    • GermanFreme82
    • 10. September 2019 um 19:00
    Zitat von milupo

    Du kannst dir das noch ein bisschen eindeutschen. Ersetze

    in Zeile 225

    Protect This Tab(s) durch Diese Tabs schützen

    und in Zeile 227

    Protect This Tab durch Diesen Tab schützen

    Achte darauf, dass die Anführungszeichen erhalten bleiben!

    Klick dann mit der rechten Maustaste auf das Symbol des neuen Skriptes RestartFirefoxButtonM.uc.js, um zu gew§hrleisten, dass dann auch der deutsche Text erscheint und prüfe es nach.

    Alles anzeigen

    Cool das werde ich dann morgen, oder so probieren, wenn ich von meiner VMWare ins Windows umziehen mit dem neuen FF69.

  • [Script] TabProtectmod.uc.js - Firefox 69 Hilfe gesucht !

    • GermanFreme82
    • 10. September 2019 um 18:49

    milupo

    2002Andreas

    Ihr seid erneut die Helden meines Tages, DANKESCHÖN !

    Wenn das so weitergeht, dann kann ich glaube bald aus meiner VMWare ins richtige Windows mit dem neuen Firefox 69 umziehen.

    Mega !!!!!!!!!!!!!

  • [Script] TabProtectmod.uc.js - Firefox 69 Hilfe gesucht !

    • GermanFreme82
    • 10. September 2019 um 18:45
    Zitat von 2002Andreas

    Das Script funktioniert:

    JavaScript
    // ==UserScript==
    // @name           tabProtect_mod2.uc.js
    // @namespace      http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description    tabProtect
    // @include        main
    // @exclude        about:*
    // @author         Alice0775
    // @Note           タブのデタッチ非対応
    // @Note           タスクバーからprivate browsingモードに入るとtabの状態と復帰後のtabのセッション保存おかしくなる
    // @compatibility  69
    // @version        2019/05/29 16:00 Bug 1519514 - Convert tab bindings
    // @version        2019/05/21 08:30 fix 69.0a1 Bug 1551320 - Replace all createElement calls in XUL documents with createXULElement
    // @version        2018/09/27 10:30 fix  tab detach
    // @version        2018/09/26 07:30 support tab detach
    // @version        2018/09/25 21:30 working with tab multi selection
    // @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);
        }
      },
    
      get tabContext() {
        return document.getElementById("tabContextMenu");
      },
    
      init: function(){
        console.log("init");
        this.tabContextMenu();
    
        //tabbrowser.xmlを置き換え
        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);
        }
    
        gBrowser.isProtectTab = function (aTab){
          return aTab.hasAttribute("tabProtect");
        }
    
        gBrowser.protectTab = function (aTab, state) {
          let isProtected;
          if (typeof state == "undefined") {
            if ( aTab.hasAttribute("tabProtect") ){
              state = false;
            } else {
              state = true;
            }
          }
          if (state) {
            aTab.setAttribute("tabProtect", "true");
            tabProtect.sessionStore.setTabValue(aTab, "tabProtect", "true");
            isProtected = true;
          } else {
            aTab.removeAttribute("tabProtect");
            try {
              tabProtect.sessionStore.deleteTabValue(aTab, "tabProtect");
            } catch(e) {}
            isProtected = false;
          }
          this.protectTabIcon(aTab);
          return isProtected;
        }
    
        gBrowser.protectTabIcon = function (aTab){
          const kXULNS =
                   "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
          var image = document.getAnonymousElementByAttribute(
                                   aTab, "class", "tab-icon-protect");
          if ( aTab.hasAttribute("tabProtect") ) {
            if(!image){
              var stack = aTab.querySelector(".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);
            }
          }
        }
    
        // CSSを適用
          var style = `
          tab[tabProtect] .tab-close-button {
            display: none;
          }
          tab[tabProtect] .tab-icon-protect{
            margin-top: 0px; /*要調整*/
            margin-left: 0px; /*要調整*/
            list-style-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQUlEQVQ4jWNgGAXDADASUvDvOsN/fPJMlLqAhRhFTJqo/H/XKXQBsoFEuQDDVnIMQPcGXJxYA3C5hiwvUOwCZAAAlRcK7m+YgB4AAAAASUVORK5CYII=');
          }
          tab:not([tabProtect]) .tab-icon-protect {
            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', this, false);
        gBrowser.tabContainer.addEventListener('SSTabRestoring', this, false);
        window.addEventListener('unload', this, false)
    
        // detach tab
        let func =  gBrowser.swapBrowsersAndCloseOther.toString();
        if (gBrowser && !/copytabProtect/.test(func)) {
          func = func.replace(
            'let otherFindBar = aOtherTab._findBar;',
            `if (aOtherTab.hasAttribute("tabProtect")) {
               aOurTab.ownerGlobal.gBrowser.protectTab(aOurTab, true);
               /*copytabProtect*/
             }
             $&`
           );
          eval("gBrowser.swapBrowsersAndCloseOther = function " + func.replace(/^function/, ''));
        }
      },
    
      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', this, false)
        gBrowser.tabContainer.removeEventListener('SSTabRestoring', this, false);
        gBrowser.tabContainer.removeEventListener('TabMove', this, false);
        this.tabContext.removeEventListener('popupshowing', this, false);
    
      },
    
      handleEvent: function(event) {
        switch(event.type) {
          case "unload":
            this.uninit(event);
            break;
          case "SSTabRestoring":
            this.restore(event);
            break;
          case "TabMove":
            this.TabMove(event);
            break;
          case "popupshowing":
            this.popupshowing(event);
            break;
        }
      },
    
      TabMove: function(aEvent){
        var aTab = aEvent.target;
        gBrowser.protectTabIcon(aTab);
      },
    
      tabContextMenu: function(){
        //tab context menu
        var tabContext = this.tabContext;
        var menuitem = this.tabProtectMenu
                     = tabContext.appendChild(
                            document.createXULElement("menuitem"));
        menuitem.id = "tabProtect";
        menuitem.setAttribute("type", "checkbox");
        if (Services.appinfo.version.split(".")[0] >= 63)
          menuitem.setAttribute("label", "Protect This Tab(s)");
        else
          menuitem.setAttribute("label", "Protect This Tab");
        menuitem.setAttribute("accesskey", "P");
        menuitem.setAttribute("oncommand","tabProtect.toggle(TabContextMenu.contextTab);");
        tabContext.addEventListener('popupshowing', this, false);
      },
    
      popupshowing: function(event) {
        this.setCheckbox(event);
      },
    
      restore: function(event){
        tabProtect.restoreAll(0);
      },
    
      restoreForTab: function(aTab){
        var retrievedData = this.sessionStore.getTabValue(aTab, "tabProtect") == "true";
    console.log("restoreForTab" + retrievedData);
        if(retrievedData){
          aTab.setAttribute('tabProtect',true);
        }
        gBrowser.protectTabIcon(aTab);
      },
    
      toggle: function(aTab){
        if (typeof gBrowser.selectedTabs != "undefined") {
          this.toggleProtectSelectedTabs(this.getSelectedTabs(aTab));
        } else {
          gBrowser.protectTab(aTab);
        }
      },
    
      toggleProtectSelectedTabs: function(tabs){
        if (tabs.length < 1)
          return;
        let isProtect = gBrowser.isProtectTab(tabs[0]);
        for (let tab of tabs) {
            gBrowser.protectTab(tab, !isProtect);
        }
      },
    
      getSelectedTabs: function(aTab){
        let contextTab = aTab;
        let selectedTabs = [contextTab];
        if (gBrowser.selectedTabs.indexOf(contextTab) < 0)
          return selectedTabs;
    
        for (let tab of gBrowser.selectedTabs) {
          if (contextTab != tab)
            selectedTabs.push(tab);
        }
        return selectedTabs;
      },
    
      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);
        }
      }
    }
    
      // We should only start the redirection if the browser window has finished
      // starting up. Otherwise, we should wait until the startup is done.
      if (gBrowserInit.delayedStartupFinished) {
        tabProtect.init();
      } else {
        let delayedStartupFinished = (subject, topic) => {
          if (topic == "browser-delayed-startup-finished" &&
              subject == window) {
            Services.obs.removeObserver(delayedStartupFinished, topic);
            tabProtect.init();
          }
        };
        Services.obs.addObserver(delayedStartupFinished,
                                 "browser-delayed-startup-finished");
      }
    Alles anzeigen

    Quelle:

    https://raw.githubusercontent.com/alice0775/user…tect_mod2.uc.js

    Alter Verwalter das geht jaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa manno mein Avatar knuddelt dich !

    Ist ja mega, mit den code läuft es nun supergeil !

  • [Script] TabProtectmod.uc.js - Firefox 69 Hilfe gesucht !

    • GermanFreme82
    • 10. September 2019 um 18:42
    Zitat von milupo
    Zitat von GermanFreme82

    Ok Zeile 170 und 287 sieht nun so aus, aber das Script läuft nicht, was wohl auf einen weiteren Fehler von mir, oder des Script zurückzuführen ist.

    Code
    170 | document.createXULElement("menuitem"));
    287 | var image = document.createElementNS(kXHTMLNS,'image');

    Ja, das ist richtig. Richtig ist auch, dass es trotzdem nicht funktionieren kann. Es gibt da den sogenannten Skript-Cache. Wenn du Änderungen vornimmst, wie in diesem Fall, muss oft der Skript-Cache geleert werden, damit sich die Änderungen auswirken.

    Wir versuchen es erst einmal mit einem weiteren Skript:

    JavaScript
    //        RestartFirefoxButtonM.uc.js
    //        v. 0.3
    
    (function() {
    
       if (location != 'chrome://browser/content/browser.xhtml') return;
        
        try {
            CustomizableUI.createWidget({
                id: 'restart-button',
                type: 'custom',
                defaultArea: CustomizableUI.AREA_NAVBAR,
                onBuild: function(aDocument) {            
                    var toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbarbutton');
                    var props = {
                        id: 'restart-button',
                        class: 'toolbarbutton-1 chromeclass-toolbar-additional',
                        label: 'Neustart',
                        tooltiptext: 'Neustart (mit Rechts- und Mittelklick wird userChrome.js-Cache geleert)',
                        style: 'list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAEZ0FNQQAAsY58%2B1GTAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAN8SURBVHjaVJFNTBxlAIafb2Z29gd2l4VdYCkokAUt1AJplQRTrVqjUWMPPWHSCzb21IOn9qIHY2xMahoTTb00NmkUm5qAjdpUI61VaCxCpCVYixt%2ByvKzCwu7LDs7zMw3HmhM%2Bt6fJ0%2FyCp69wiOzZBCPcqSmIXg0HPHuC4R8nkLWyOXyYiIzfuVHzMIA%2BZsLtH18EApntUdhpzUSD5577nDLi%2FGWKjx%2BHVfR8HpFwNwsxTMzza%2BOXJ1%2B58Ev2sVEV%2ByEawXqxf8FllNWEQ9ePXzsqQOecIDU8jampSAVD76Al2BIIx4Dv2Nz7%2FYq%2B5%2BP8sNXE6WdAhdQlOM9rzUdaGiN8M9UjnKvQjzuA0UjV3AxDIcHywqRoEbXoVrKgyBtKXYEUvprmiN9oaoyvr9wl62NHJbtJeDzOo17YmprVzWOppLO2RRNwf1FSOzSUAXsCIR4QdP13UPfjhUde2mjuBXUjcXNEabOnJmq7Y4Nd7z1fu%2BJ%2FR2Jpgrm0jauAI8GlnSlBi4I0bO6sLBWHc9esxRdmjOZf5n%2B5CLWzCzOvsbKupBZ1xgmElUoC%2BgoKtRGQfNomoaND8P8XS%2Bby1olO7O6GHTl1DejGDOrNB%2BvpO7I%2Ba31%2FDP9Z28YUmqoqhCKcG2EYD6ZMUTojZ8WHmsqD%2BI6wnWFajugCkuuZaV%2FZS47wp99R7E3LbxPV6rtr7dV1pmyuBWs3hr7dZ380LC2tzseffvUHm86C1JC2A%2FrGcn509cn%2BPvTk9ibc1R06qL91Ms1CadF000ll9rVS2VykLzVr0lHOgtpuJ9yUFyXxqhKZjbH2nJRI9IZwyw2kXjvXV%2FIOWgaBcc2a%2BtjdVXR1J3iBDx8QUpQUJAuJJclseogxz441H5vrPO72cm0VSyVPJq27ZaHm8ST3Y0M9d9Kkr19A1A1x4VIObTGBfNrsJ5XmE9b6KqgvrOGhr1Vns2sgeNIkXiigvHf1liZuHWZYjINSEXRVLewZjN6bYmYbvN4rcDvVzFKLnOpErMLBpvbklClznyyyPDA6DjTX3wJWICr%2Bnb3ffjXSGpl5Nxnn88uh2ORUCBaHfVQU%2BsjVuGhKqJT5lFYShr8fGH4j42bH53EnJ4EtgEEPQOTzHx9mqXLl9AT9TS82RvreOmVcMTXVh4JhIr5kp3LFu6u3Lk%2ByMylQazU3ENYAvw3AFUTimFqj5i7AAAAAElFTkSuQmCC)',
                        onclick: 'if (event.button == 1 || event.button == 2) { \
                                        event.preventDefault(); \
                                        Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime). \
                                            invalidateCachesOnRestart(); \
                                     }; \
                                     BrowserUtils.restartApplication();'
                    };                
                    for (var p in props)
                        toolbaritem.setAttribute(p, props[p]);                
                    return toolbaritem;
                }        
            });
            
        } catch(e) { };        
       
    })();
    Alles anzeigen

    Mit diesem Skript kannst du Firefox neu starten (Linksklick) und Firefox neu starten und gleichzeitig den Skript-Cache leeren (Mittelklick oder Rechtsklick). Das Symbol (zwei blaue Pfeile) ist verschiebbar. Das Skript ist bereits an Fx 69 angepasst.

    Coole Sache !

    Hab ich hinzugefügt und jeweils "Linksklick" , Mittelklick und Rechtsklick probiert.

    FF69 ging aus und startet sich neu, aber meine Menü Tabprotect ist noch nicht da.


    Kannst du das mal vlt. bei dir testen, denn bei mir scheint es nicht zu gehen, obwohl es richtig ist, wie du sagst.

  • [Script] TabProtectmod.uc.js - Firefox 69 Hilfe gesucht !

    • GermanFreme82
    • 10. September 2019 um 18:29
    Zitat von milupo

    Ja, das habe ich noch nicht geschrieben: Es darf nur createElement ersetzt werden, nicht createElementNS. Wenn du pauschal ersetzen willst, füge immer die nachfolgende öffnende runde Klammer hinzu:

    Suchen: createElement(

    Ersetzen: createXULElement(

    Dadurch kannst du nicht createElementNS versehentlich mitersetzen. Also bitte nur Zeile 170 ersetzen.

    Ok Zeile 170 und 287 sieht nun so aus, aber das Script läuft nicht, was wohl auf einen weiteren Fehler von mir, oder des Script zurückzuführen ist.

    Code
    170 | document.createXULElement("menuitem"));
    287 | var image = document.createElementNS(kXHTMLNS,'image');

    komplettes Script NEU:

    Code
    // ==UserScript==
    // @name           tabProtect_mod2.uc.js
    // @namespace      http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description    tabProtect
    // @include        main
    // @exclude        about:*
    // @author         Alice0775
    // @Note           ??????????
    // @Note           ???????private browsing???????tab????????tab??????????????
    // @compatibility  60
    // @version        2018/09/27 10:30 fix  tab detach
    // @version        2018/09/26 07:30 support tab detach
    // @version        2018/09/25 21:30 working with tab multi selection
    // @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?????
        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???
        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: 0px; /*???*/
            margin-left: 0px; /*???*/
            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', this, false);
        gBrowser.tabContainer.addEventListener('SSTabRestoring', this, false);
        window.addEventListener('unload', this, false)
    
        // detach tab
        let func =  gBrowser.swapBrowsersAndCloseOther.toString();
        if (gBrowser && !/copytabProtect/.test(func)) {
          func = func.replace(
            'let otherFindBar = aOtherTab._findBar;',
            `if (aOtherTab.hasAttribute("tabProtect")) {
               aOurTab.ownerGlobal.gBrowser.protectTab(aOurTab, true);
               /*copytabProtect*/
             }
             $&`
           );
          eval("gBrowser.swapBrowsersAndCloseOther = function " + func.replace(/^function/, ''));
        }
      },
    
      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', this, false)
        gBrowser.tabContainer.removeEventListener('SSTabRestoring', this, false);
        gBrowser.tabContainer.removeEventListener('TabMove', this, false);
        gBrowser.tabContainer.contextMenu.removeEventListener('popupshowing', this, false);
    
      },
    
      handleEvent: function(event) {
        switch(event.type) {
          case "unload":
            this.uninit(event);
            break;
          case "SSTabRestoring":
            this.restore(event);
            break;
          case "TabMove":
            this.TabMove(event);
            break;
          case "popupshowing":
            this.popupshowing(event);
            break;
        }
      },
    
      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.createXULElement("menuitem"));
        menuitem.id = "tabProtect";
        menuitem.setAttribute("type", "checkbox");
        if (Services.appinfo.version.split(".")[0] >= 63)
          menuitem.setAttribute("label", "Protect This Tab(s)");
        else
          menuitem.setAttribute("label", "Protect This Tab");
        menuitem.setAttribute("accesskey", "P");
        menuitem.setAttribute("oncommand","tabProtect.toggle(TabContextMenu.contextTab);");
        tabContext.addEventListener('popupshowing', this, false);
      },
    
      popupshowing: function(event) {
        this.setCheckbox(event);
      },
    
      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(aTab){
        if (typeof gBrowser.selectedTabs != "undefined") {
          this.toggleProtectSelectedTabs(this.getSelectedTabs(aTab));
        } else {
          gBrowser.protectTab(aTab);
        }
      },
    
      toggleProtectSelectedTabs: function(tabs){
        if (tabs.length < 1)
          return;
        let isProtect = gBrowser.isProtectTab(tabs[0]);
        for (let tab of tabs) {
            gBrowser.protectTab(tab, !isProtect);
        }
      },
    
      getSelectedTabs: function(aTab){
        let contextTab = aTab;
        let selectedTabs = [contextTab];
        if (gBrowser.selectedTabs.indexOf(contextTab) < 0)
          return selectedTabs;
    
        for (let tab of gBrowser.selectedTabs) {
          if (contextTab != tab)
            selectedTabs.push(tab);
        }
        return selectedTabs;
      },
    
      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);
        }
      }
    }
    
    gBrowser.isProtectTab = function (aTab){
      return aTab.hasAttribute("tabProtect");
    }
    
    gBrowser.protectTab = function (aTab, state) {
      let isProtected;
      if (typeof state == "undefined") {
        if ( aTab.hasAttribute("tabProtect") ){
          state = false;
        } else {
          state = true;
        }
      }
      if (state) {
        aTab.setAttribute("tabProtect", "true");
        tabProtect.sessionStore.setTabValue(aTab, "tabProtect", "true");
        isProtected = true;
      } else {
        aTab.removeAttribute("tabProtect");
        try {
          tabProtect.sessionStore.deleteTabValue(aTab, "tabProtect");
        } catch(e) {}
        isProtected = false;
      }
      this.protectTabIcon(aTab);
      return isProtected;
    }
    
    gBrowser.protectTabIcon = function (aTab){
      const kXHTMLNS =
               "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xhtml";
      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(kXHTMLNS,'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,''));
      }
    }
    
    
    tabProtect.init();
    Alles anzeigen
  • [Script] TabProtectmod.uc.js - Firefox 69 Hilfe gesucht !

    • GermanFreme82
    • 10. September 2019 um 18:15

    Ersetze Vorkommen von browser.xul durch browser.xhtml und Vorkommen von createElement durch createXULElement.

    Ich habe folgende Zeilen finden können, die man ersetzen muß:

    ALT !!!

    Code
    Vorkommen von XUL
    -------------------
    276 | const kXULNS =
    277 | "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
    287 | var image = document.createElementNS(kXULNS,'image');
    
    Vorkommen von "createElement"
    ------------------------------
    170 | document.createElement("menuitem"));
    287 | var image = document.createElementNS(kXHTMLNS,'image');


    NEU !!!

    Code
    Vorkommen von XUL
    -------------------
    276 | tabProtect.sessionStore.deleteTabValue(aTab, "tabProtect");
    277 | "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xhtml";
    287 | var image = document.createXULElementNS(kXHTMLNS,'image');
    
    Vorkommen von "createElement"
    ------------------------------
    170 | document.createXULElement("menuitem"));
    287 | var image = document.createXULElementNS(kXHTMLNS,'image');

    Hab ich das so richtig gemacht, oder sind mir da Fehler unterlaufen und hab ich wohlmöglich ein paar Zeilen übersehen ?

  • Firefox 69 Anpassungen fehlerhaft trotz about:config Änderung

    • GermanFreme82
    • 10. September 2019 um 18:08
    Zitat von milupo
    Zitat von GermanFreme82

    2002Andreas hats mir nochmal gepostet, aber ich hab das schonmal verwendet, da hast du recht, aber irgendwie ging das ja zuvor nicht, aber jetzt nach den ganzen Änerdungen ging es nun wieder einwandfrei ;-).

    Es sind maximal zwei Änderungen und auch jetzt beim Skript TabProtect.uc.js hast du keine Änderung vorgenommen. Schon mal etwas von Suchen und Ersetzen gehört?

    Aber ich gebe dir einen Tipp - schaue mal ins Zeile 170.

    Ich möchte diesen Thread nun gerne abschließen der Übersicht wegen.

    Könntets du mir bitte dort schreiben wegen dem Script => [Script] TabProtectmod.uc.js - Firefox 69 Hilfe gesucht !

    Ich weiß was du meinst bin grad dabei, aber hart am verzweifeln.

  • [Script] TabProtectmod.uc.js - Firefox 69 Hilfe gesucht !

    • GermanFreme82
    • 10. September 2019 um 18:00

    Hallo liebe Firefox-Freunde !

    Wer von euch kenn das Script "TabProtectmod.uc.js" ?

    Unter Firefox 68.0.2 fügt das einen Eintrag ins Kontextmenü für Tabs hinzu, in dem man den Tab an exakt der gleiche Stelle sperren kann,

    ohne in dabei zu verschieben, oder anzupinnen.

    Das finde ich enorm hilfreich, denn ich nutze sehr ungern das anpinnen von Tabs,

    da es mich sehr stört und der Erfinder der Scripts war offensichtlich der gleichen Meinung, wie ich.

    Unter Firefox 68.0.2 funktioniert das einwandfrei, jedoch unter Firefox 69 versagt seine Funktion.

    Auf dem Foto unten siehst du meinen Firefox 68.0.2 mit dem jeweiligen Menü dazu, damit du weißt, wovon ich rede.

    Da ich weder ein Scripter, noch Programmierer bin, kenne ich mich also null aus und bräuchte daher unbedingt eure Hilfe.

    Wer von euch kann mir dabei helfen, das Script "TabProtectmod.uc.js" wieder unter Firefox 69 zum laufen zu bringen ?

    Code
    // ==UserScript==
    // @name           tabProtect_mod2.uc.js
    // @namespace      http://space.geocities.yahoo.co.jp/gl/alice0775
    // @description    tabProtect
    // @include        main
    // @exclude        about:*
    // @author         Alice0775
    // @Note           ??????????
    // @Note           ???????private browsing???????tab????????tab??????????????
    // @compatibility  60
    // @version        2018/09/27 10:30 fix  tab detach
    // @version        2018/09/26 07:30 support tab detach
    // @version        2018/09/25 21:30 working with tab multi selection
    // @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?????
        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???
        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: 0px; /*???*/
            margin-left: 0px; /*???*/
            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', this, false);
        gBrowser.tabContainer.addEventListener('SSTabRestoring', this, false);
        window.addEventListener('unload', this, false)
    
        // detach tab
        let func =  gBrowser.swapBrowsersAndCloseOther.toString();
        if (gBrowser && !/copytabProtect/.test(func)) {
          func = func.replace(
            'let otherFindBar = aOtherTab._findBar;',
            `if (aOtherTab.hasAttribute("tabProtect")) {
               aOurTab.ownerGlobal.gBrowser.protectTab(aOurTab, true);
               /*copytabProtect*/
             }
             $&`
           );
          eval("gBrowser.swapBrowsersAndCloseOther = function " + func.replace(/^function/, ''));
        }
      },
    
      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', this, false)
        gBrowser.tabContainer.removeEventListener('SSTabRestoring', this, false);
        gBrowser.tabContainer.removeEventListener('TabMove', this, false);
        gBrowser.tabContainer.contextMenu.removeEventListener('popupshowing', this, false);
    
      },
    
      handleEvent: function(event) {
        switch(event.type) {
          case "unload":
            this.uninit(event);
            break;
          case "SSTabRestoring":
            this.restore(event);
            break;
          case "TabMove":
            this.TabMove(event);
            break;
          case "popupshowing":
            this.popupshowing(event);
            break;
        }
      },
    
      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");
        if (Services.appinfo.version.split(".")[0] >= 63)
          menuitem.setAttribute("label", "Protect This Tab(s)");
        else
          menuitem.setAttribute("label", "Protect This Tab");
        menuitem.setAttribute("accesskey", "P");
        menuitem.setAttribute("oncommand","tabProtect.toggle(TabContextMenu.contextTab);");
        tabContext.addEventListener('popupshowing', this, false);
      },
    
      popupshowing: function(event) {
        this.setCheckbox(event);
      },
    
      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(aTab){
        if (typeof gBrowser.selectedTabs != "undefined") {
          this.toggleProtectSelectedTabs(this.getSelectedTabs(aTab));
        } else {
          gBrowser.protectTab(aTab);
        }
      },
    
      toggleProtectSelectedTabs: function(tabs){
        if (tabs.length < 1)
          return;
        let isProtect = gBrowser.isProtectTab(tabs[0]);
        for (let tab of tabs) {
            gBrowser.protectTab(tab, !isProtect);
        }
      },
    
      getSelectedTabs: function(aTab){
        let contextTab = aTab;
        let selectedTabs = [contextTab];
        if (gBrowser.selectedTabs.indexOf(contextTab) < 0)
          return selectedTabs;
    
        for (let tab of gBrowser.selectedTabs) {
          if (contextTab != tab)
            selectedTabs.push(tab);
        }
        return selectedTabs;
      },
    
      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);
        }
      }
    }
    
    gBrowser.isProtectTab = function (aTab){
      return aTab.hasAttribute("tabProtect");
    }
    
    gBrowser.protectTab = function (aTab, state) {
      let isProtected;
      if (typeof state == "undefined") {
        if ( aTab.hasAttribute("tabProtect") ){
          state = false;
        } else {
          state = true;
        }
      }
      if (state) {
        aTab.setAttribute("tabProtect", "true");
        tabProtect.sessionStore.setTabValue(aTab, "tabProtect", "true");
        isProtected = true;
      } else {
        aTab.removeAttribute("tabProtect");
        try {
          tabProtect.sessionStore.deleteTabValue(aTab, "tabProtect");
        } catch(e) {}
        isProtected = false;
      }
      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,''));
      }
    }
    
    
    tabProtect.init();
    Alles anzeigen

    Bilder

    • aaa.jpg
      • 50,26 kB
      • 740 × 496
  • Firefox 69 Anpassungen fehlerhaft trotz about:config Änderung

    • GermanFreme82
    • 10. September 2019 um 17:50
    Zitat von milupo
    Zitat von GermanFreme82
    Zitat von 2002Andreas

    Dafür brauchst du ein weiteres Script;)

    JavaScript
    //    HideTabbarWithOneTab.uc.js
    //    v. 0.1
    
    Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService).setBoolPref("browser.tabs.drawInTitlebar", false);
    var tabbar = document.getElementById("TabsToolbar");    
    function showHideTabbar (mutations) {
        tabbar.collapsed = (gBrowser.visibleTabs.length == 1);
    };            
    showHideTabbar();                        
    var observer = new MutationObserver(showHideTabbar);        
    observer.observe(document.querySelector('#tabbrowser-tabs'), {attributes: true});
    Alles anzeigen

    Hab ich eben gemacht und eeeeendlich ... ach ist das herrlich, es funktioniert.

    Jetzt hab ich meine Leiste unten mit den Symbolen und die Tableiste ist wo sie sein sollte.

    siehe Video im Anhang !

    Hast du denn das Skript wiedererkannt? Schaue mal in deinen Beitrag #10.

    2002Andreas hats mir nochmal gepostet, aber ich hab das schonmal verwendet, da hast du recht, aber irgendwie ging das ja zuvor nicht, aber jetzt nach den ganzen Änerdungen ging es nun wieder einwandfrei ;-).

  • Firefox 69 Anpassungen fehlerhaft trotz about:config Änderung

    • GermanFreme82
    • 10. September 2019 um 17:39

    milupo

    2002Andreas

    Endor

    und alle anderen, ich DANKE euch !

    Ihr seid super und es ist sooo mega, das es nun endlich funktioniert, mit eurer Hilfe !

Unterstütze uns!

Jährlich (2025)

104,5 %

104,5% (679,10 von 650 EUR)

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