Beiträge von GermanFreme82
-
-
Ich habe dennoch uBlock und NoScript in Verdacht, weil es sich wirklich nur um Werbeskripte handelt.
Kann doch aber nicht sein, wenn ich ALLE Erw. manuell im Normalbetrieb abstelle und das gleiche Problem dann noch habe.
Oder doch ?????
-
nutzt du statusleiste.uc.js?
dann guck hier Leeres Fenster - Bezahlen mit PayPal
Keine ahnung meinst du das hier, denn ich hab keine Ahnung, ob das der gleiche Code ist, denn mit sowas kenne ich mich nicht aus.
AddonLeisteUnten.uc.js
Code
Alles anzeigen(function() { if (location != 'chrome://browser/content/browser.xhtml') return; var tb = document.createXULElement('toolbar'); tb.id = 'new-toolbar'; tb.setAttribute('customizable', true); tb.setAttribute('mode', 'icons'); var vbox = document.createXULElement('vbox'); document.getElementById('navigator-toolbox').parentNode.insertBefore( vbox, document.getElementById('browser-bottombox')); vbox.appendChild(tb); CustomizableUI.registerArea('new-toolbar', {legacy: true}); CustomizableUI.registerToolbarNode(tb); })(); (function() { var tabbar = document.getElementById('TabsToolbar'); if (tabbar && !tabbar.collapsed) { tabbar.parentNode.parentNode.appendChild(tabbar); }; })(); -
Achja hab was wichtiges vielleicht vergessen zu erwähnen.
Das PopUp bleibt weiß ...ja ABER wenn ich die URL aus dem weißen leeren Popup kopiere und in einen neuen TAB einfüge, dann sehe ich das Bild richtig !!!!
Das ist nur vollkommen umständlich, wenn man erst immer die URL kopieren muß nen neuen TAB aufmacht und dann das dort einfügt um den Quark sehen zu können.
Bei eBay wnen ich mit Paypal bezahlen wiell, passiert das gleiche und da muß ich das auch mit Copy & Paste im neuen TAB machen, sonst klappts nicht.
-
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.
-
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 ?
-
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. -
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.
-
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.
-
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 ?
-
Hab uBlock abgestellt und wieder an, aber ändern tut sich da nix und das Fenster bleibt weiß und leer.
-
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. -
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 ?
-
Ich hab das Script eben probiert und es funktioniert einwandfrei.
Was es alles gibt wow !
Vielen Dank für diesen coolen Beitrag !
CSS
Alles anzeigen@-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
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.
Cool das werde ich dann morgen, oder so probieren, wenn ich von meiner VMWare ins Windows umziehen mit dem neuen FF69.
-
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 !!!!!!!!!!!!!
-
Das Script funktioniert:
JavaScript
Alles anzeigen// ==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"); }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 !
-
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
Alles anzeigen// 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) { }; })();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. -
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.
Code170 | document.createXULElement("menuitem")); 287 | var image = document.createElementNS(kXHTMLNS,'image');komplettes Script NEU:
Code
Alles anzeigen// ==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(); -
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 !!!
CodeVorkommen 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 !!!CodeVorkommen 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 ?