Beiträge von Endor
-
-
So habe meinen CSS Code Submenu-WebEntwickler.css aktualisiert:
Jetzt sollte er überall gleich aussehen.
Auch die neue Option die erst in Nightly dabei ist wird angesprochen.
Ich habe mir mal das Symbol für JavaScript von Dir geklaut. :wink:
gefällt mir viel besser als meines.
Vielen Dank.
auch Dir vielen Dank für den Hinweis.
Mfg.
Endor
-
Ich versuche es gerade so:
#PanelUI-developerItems > toolbarbutton[label="Werkzeuge ein-/ausblenden"]
usw.
Funktioniert soweit.
Baue meinen CSS Code mal um.
Melde mich.
Mfg.
Endor -
Das wäre mir sogar am liebsten.
Bloß wie mache ich das mit dem Inspektor?
Der gibt ja keine eindeutige Bezeichnung her.
Nur sowas:
#PanelUI-developerItems > toolbarbutton:nth-child(10)
Mfg.
Endor
-
Das mit der Zuordnung ist etwas schwieriger, denn nicht jeder User hat
die gleiche Anzahl der Einträge. Denn das hängt davon ab was man in den Einstellungen
der Entwicklerwerkzeuge angehakt hat.
Wie man sieht habe ich hier bei Laufzeitanalyse keinen Haken, daher
passt der CSS Code wieder nicht. Danke für den Hinweis.
Das werde ich noch ändern.
Mfg.
Endor
-
Alles in Hamburger-Panel.css
Habe das nicht extra in eine eigene Datei gepackt.
Achja. die Datei
habe ich auch aktualisiert.
Da war einiges durcheinander.
Mfg.
Endor -
So habe es geschafft, habe heute die Codes aktualisiert:
Siehe hier: https://github.com/Endor8/CSS/tre…Hamburger-Panel
So sieht es bei Konto jetzt aus:
Mfg.
Endor -
Wie wäre es mit diesem Script:
Code
Alles anzeigen// ==UserScript== // @name AutoPopup.uc.js // @description Auto popup menulist/menupopup // @compatibility Firefox 69 // @author GOLF-AT, modified by gsf & aborix // @version 2019.08.09 // ==UserScript== (function() { const showDelay = 200; // delay of showing popups const hideDelay = 500; // delay of hiding popups const AlwaysPop = false; // show popups also when window is not focused var overElt = null; var PopElt = null; var PopTimer = null; var HideTimer = null; // elements are CSS selector strings var BlackIDs = []; // whitelist, and trigger action var whiteIDs = [ { id: 'omnibar-defaultEngine', popMemu: 'omnibar-engine-menu', run: function(overElem) { document.getElementById('omnibar-in-urlbar').click(0); } }, { id: 'ucjs_zoom_statuslabel', popMemu: 'ucjs_zoom-context', run: null }, { id: 'UserScriptLoader-icon', popMemu: 'UserScriptLoader-popup', run: null }, { id: 'readLater', popMemu: 'readLater-popup', run: null //function(overElem) {PopElt.popup();} }, { id: 'foxyproxy-toolbar-icon', popMemu: 'foxyproxy-toolbarbutton-popup', run: null } ]; var whitesInx = -1; const popupPos = ['after_start', 'end_before', 'before_start', 'start_before']; const searchBar = window.BrowserSearch ? BrowserSearch.searchBar : null; function IsButton(elt) { return elt && (elt.localName == 'toolbarbutton' || elt.localName == 'button'); } function IsWidgetBtn(elt) { return IsButton(elt) && ((elt.hasAttribute('widget-id') && elt.getAttribute('widget-type') == 'view') || elt.id == 'fxa-toolbar-menu-button' || elt.id == 'library-button' || elt.id == 'alltabs-button'); } function IsSearchBtn(elt) { return (elt && elt.className == 'searchbar-search-button') || whitesInx == 0; } function IsPanelMenuBtn(elt) { return elt && elt.id == 'PanelUI-menu-button'; } function IsDownloadBtn(elt) { return elt && elt.id == 'downloads-button'; } function IsMenuBtn(elt) { return IsPanelMenuBtn(elt) || IsDownloadBtn(elt) || IsWidgetBtn(elt) || (IsButton(elt) && getPopupMenu(elt)); } function IsOverflowBtn(elt) { return elt && elt.id == 'nav-bar-overflow-button'; } function IsUrlbarDropmarker(elt) { return elt && elt.classList && elt.classList.contains('urlbar-history-dropmarker'); } function IsCustomizationBtn(elt) { return IsButton(elt) && elt.className == 'customizationmode-button'; } function IsAutoComplete(elt) { try { return elt.getAttribute('type').substr(0, 12) == 'autocomplete'; } catch(e) { } } function isBlackNode(elt) { return BlackIDs.some(function(css) { try { var nodes = document.querySelectorAll(css); } catch(e) { return false; } for (var node of nodes) { if (node == elt) return true; } return false; }) } function getPopupNode(node) { if (whitesInx > -1 && PopElt) return PopElt; if (IsSearchBtn(node) || IsOverflowBtn(node) || node.id == 'sidebar-switcher-target') return node; var elt, isPop, s; for (; node != null; node = node.parentNode) { if (node == PopElt) return node; isPop = false; // node isn't popup node s = node.localName; if (s == 'menupopup' || s == 'popup' || s == 'menulist' || IsAutoComplete(node) || IsMenuBtn(node) || IsUrlbarDropmarker(node)) { isPop = true; } else if (s == 'dropmarker' && node.getAttribute('type') == 'menu' && node.parentNode.firstChild.localName == 'menupopup') { isPop = true; } else if (s == 'menu') { isPop = (node.parentNode.localName == 'menubar'); } else if (IsButton(node)) { for (elt = node; (elt = elt.nextSibling) != null;) { if (elt.localName == 'dropmarker' && elt.width > 0 && elt.height > 0) break; } if (elt) break; } if (isPop) break; } if (PopElt && node) { // whether node is child of PopElt for (elt = node.parentNode; elt != null; elt = elt.parentNode) { if (elt == PopElt) return PopElt; } } return isPop ? node : null; } function getPopupMenu(elt) { if (whitesInx > -1 && PopElt) return PopElt; var nodes = elt ? elt.ownerDocument.getAnonymousNodes(elt) || elt.childNodes : null; if (nodes) { for (let node of nodes) { if (node.localName == 'menupopup' || node.localName == 'panel') return node; } } var s = elt.getAttribute('popup'); return s ? document.getElementById(s) : null; } function getPopupPos(elt) { if (elt.id == 'bookmarks-menu-button') return null; var x, y, pos, i; for (pos = 0, x = elt.screenX, y = elt.screenY; elt != null; elt = elt.parentNode) { if (elt.localName == 'window' || !elt.parentNode) break; else if (elt.localName != 'toolbar' && elt.localName != 'hbox' && elt.localName != 'vbox'); else if (elt.height >= 3 * elt.width) { if (elt.height >= 45) { pos = 9; break; } } else if (elt.width >= 3 * elt.height) { if (elt.width >= 45) { pos = 8; break; } } } try { i = (pos & 1) ? // is pos odd? (x <= elt.width / 2 + elt.screenX ? 1 : 3) : (y <= elt.height / 2 + elt.screenY ? 0 : 2); } catch(e) { i = 0; } return popupPos[i]; } function AutoPopup() { PopTimer = null; if (!overElt) return; if (whitesInx > -1 && PopElt && whiteIDs[whitesInx].run) { whiteIDs[whitesInx].run(overElt); return; } if (!PopElt) PopElt = overElt; if (overElt.localName == 'dropmarker') { PopElt.showPopup(); } else if (overElt.localName == 'menulist') { overElt.open = true; } else if (IsPanelMenuBtn(overElt)) { PopElt = document.getElementById('appMenu-popup'); PanelUI.show(); } else if (IsWidgetBtn(overElt)) { PopElt = document.getElementById('customizationui-widget-panel'); if (overElt.hasAttribute('onmousedown')) overElt.dispatchEvent(new MouseEvent('mousedown')); else overElt.dispatchEvent(new UIEvent('command')); } else if (IsDownloadBtn(overElt)) { PopElt = document.getElementById('downloadsPanel'); DownloadsPanel.showPanel(); } else if (IsSearchBtn(overElt)) { searchBar.openSuggestionsPanel(); } else if (IsOverflowBtn(overElt)) { PopElt = document.getElementById('widget-overflow'); if (!overElt.open) overElt.click(); } else if (overElt.id == 'sidebar-switcher-target') { PopElt = document.getElementById('sidebarMenu-popup'); if (!overElt.classList.contains('active')) SidebarUI.toggleSwitcherPanel(); } else if (IsUrlbarDropmarker(overElt)) { PopElt = gURLBar.panel; if (!gURLBar.textbox.hasAttribute('open')) overElt.click(); } else { PopElt = getPopupMenu(overElt); if (IsCustomizationBtn(overElt)) overElt.open = true; else { try { let Pos = getPopupPos(overElt); PopElt.removeAttribute('hidden'); PopElt.openPopup(overElt, Pos, 0, 0, false, false, null); } catch(e) { PopElt = null; } } } } function HidePopup() { try { if (overElt.localName == 'dropmarker') { try { PopElt.parentNode.closePopup(); } catch(e) { try { PopElt.hidePopup(); } catch(e) { } } } else if (overElt.localName == 'menulist') PopElt.open = false; else if (PopElt && PopElt.hidePopup) PopElt.hidePopup(); else if (PopElt.popupBoxObject) PopElt.popupBoxObject.hidePopup(); else if (IsSearchBtn(overElt)) searchBar.textbox.closePopup(); else if (IsPanelMenuBtn(overElt)) PanelUI.hide(); } catch(e) { } HideTimer = null; overElt = PopElt = null; } function MouseOver(e) { if (!AlwaysPop && !document.hasFocus()) return; var popNode, n = e.originalTarget; whitesInx = -1; if (n.hasAttribute('id') && whiteIDs.some(function(k,i,me) { if (k.id == n.id) { overElt = n; whitesInx = i; PopElt = document.getElementById(k.popMemu); PopTimer = setTimeout(AutoPopup, showDelay); return true; } })) return; popNode = getPopupNode(e.originalTarget); if (!popNode || (popNode && popNode.disabled) || isBlackNode(popNode)) { MouseOut(); return; } if (HideTimer) { window.clearTimeout(HideTimer); HideTimer = null; } try { if (IsAutoComplete(popNode)) { return; }; for (var elt = popNode; elt != null; elt = elt.parentNode) { if (elt.localName == 'menupopup' || elt.localName == 'popup') return; } } catch(e) { } if (PopElt && popNode == PopElt && PopElt != overElt) return; if (overElt && popNode != overElt) HidePopup(); overElt = popNode; PopElt = null; PopTimer = setTimeout(AutoPopup, showDelay); } function MouseOut() { if (PopTimer) { window.clearTimeout(PopTimer); PopTimer = null; } if (!HideTimer && PopElt) HideTimer = window.setTimeout(HidePopup, hideDelay); } window.addEventListener('mouseover', MouseOver, false); })();damit popt aber auch einiges anderes beim drüber fahren mit der Maus auf.
Mfg.
Endor -
Hallo milupo.
Danke, aber das wäre nicht ganz richtig, denn auch 2002Andreas hat mir dabei sehr geholfen, aber auch andere. Daher gebührt nicht nur mir der Dank.
Mfg.
Endor
-
auch von mir vielen Dank!
Mfg.
Endor
-
Hust, Reusper....
Das Original ist von mir.
Siehe Github: https://github.com/Endor8/CSS/tre…Hamburger-Panel
Habe mittlerweile hier die beiden fehlenden eingebaut, Untermenü auch,
aber ein Untermenü fehlt noch, klick ganz oben bei Bei Firefox anmelden.
Das muss ich erst noch machen. Wenn alles passt werde ich den Code bei Github dann aktualisieren.
Das muss ich noch machen:
-
BackToTop.uc.js
JavaScript: BackToTop.uc.js
Alles anzeigen// BackToTop.uc.js (function() { if (location != 'chrome://browser/content/browser.xhtml') return; try { CustomizableUI.createWidget({ id: 'addBackToTop-panel', 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: 'addBackToTop-panel', class: 'toolbarbutton-1 chromeclass-toolbar-additional', label: 'Seite nach oben', tooltiptext: 'Seite nach oben', style: 'list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAACXBIWXMAAAsSAAALEgHS3X78AAACsklEQVQ4jX2TT2gcdRTHP%2B%2F3m%2Bnszs7umk2TbjbENFpXS2K02lZoKqUKFlsoFAmlZzUHETyI54J4KJWC9KwepAdzkIAXEU968qSiBS2RttRk2RD7Z01ndmZnfr%2Bfhw1ijfrgwYP3vp8Hj%2B8T%2Fi907QK1fSMMum%2FhV1LSHqgQynsBA3e%2FRf2HVKGqH9aPn39ndunKkky9%2FBV5HuHMzh3%2FIi4RjC%2BHx949d%2BzsG%2BrFhT2EEwcevn5j86Trfv8Znp%2FgjwIW0rUdgN2UJ1eCFy6dfOrUqzK1RxMAz87VeWjmcPOXG%2F1Fu%2FHjFwT124jsAMxQa3%2Bun39%2FoXXkLKNV0A60Ai0w3w5pPPLcyK83%2B4uDjdVv0NIh7fwFmKcxv6IOX5oP9p%2BmVAYP8PUwcZAPoD1dYrx9MFq9ZRazznc%2Fka2takS9xPjCp%2FLkB4%2F6zeMoH6waCj0Fsn1mY6GfQWsioDV7qLS%2B6Z2JO1dvaWrty7TfOyilQ4hJEHG4XR5OC1pABPICMgNpDrfvFQySBKlO%2B92tyRMeqvoJzo677kelwmSPyxOv%2BVIJiZXDGKE%2FgOkGNCsQ7YLORsaXH6%2FEiFyz3si6hzPLZN1l7nwdktvVIl5q5b8XkDj8psfsXuHABJQ9CALIe5BtJT%2FYPD1KXePhBnD9MvxxtWD3olaxpTnmmJ0TjszBVAOMgcJAWIYosChV09Z6IOCx9TM4OzRQKpw6qnnljM9IBZyDLAfHsI4qEHoW0ly4XwAp3rZ4GLnhmbbm6cdgc3PIDf1hyzmoRlDVDvpmeNU8xXvA%2F05ULYDJGlT%2B8SXOQb0C1yKBtFD0c%2FA1HlS3RwYJRRqv%2F5aMra9VuJ8ZnHsQkJQVazdjbGYMxgEWQaLtkRSYeb069vbFxmgrcjazfwcAKKVUrxfH93p33kTcFRD%2BBJjxDD9ykwv%2FAAAAAElFTkSuQmCC)', oncommand: 'var tabMM = event.target.ownerGlobal.gBrowser.selectedBrowser.messageManager; \ tabMM.loadFrameScript("data:, content.scrollTo(0,0)", false);' }; for (var p in props) toolbaritem.setAttribute(p, props[p]); return toolbaritem; } }); } catch(e) { }; var item = document.createXULElement('menuitem'); item.id = 'addBackToTop-context'; item.setAttribute('label', 'Seite nach oben'); item.setAttribute('accesskey', 'O'); item.setAttribute('oncommand', 'var tabMM = gBrowser.selectedBrowser.messageManager;' + 'tabMM.loadFrameScript("data:, content.scrollTo(0,0)", false);' ); document.getElementById('contentAreaContextMenu').appendChild(item); })();Mfg.
Endor -
zum CSS Code:
In Zeile 105 fehlt der abschließende / nach dem Stern.
In Zeile 62 ist eine } zuviel dafür hat wie milupo schon sagte
am Ende wieder eine } gefehlt.
Teste mal ob das jetzt funktioniert habe hier beides geändert:
CSS
Alles anzeigen/* Sidebar via Hover hervorrufen */ @-moz-document url("chrome://browser/content/places/bookmarksSidebar.xul"), url("chrome://browser/content/browser.xhtml") { #menu_bookmarksSidebar { display: -moz-box !important; } #bookmarks-view-children { margin-top: -100px !important; margin-left: -15px !important; } sidebarheader { display: none !important; } .sidebar-placesTreechildren::-moz-tree-separator { margin: 0px 500px !important; } label[persist="value"][flex="1"][crop="end"][control="sidebar"][value="Lesezeichen"] { display: none !important; } #sidebar-box { display: block !important; position: fixed !important; top: 112px; bottom: 27px !important; width: 0px !important; overflow-x: hidden !important; -moz-appearance: none !important; border: 1px solid transparent !important; border-left: 0 !important; opacity: 0 !important; transition: width .2s ease-out .2s, opacity .2s ease-out .2s !important; } #sidebar-box:hover { width: 255px !important; opacity: 1 !important; transition: width .2s ease-out .2s, opacity .2s ease-out .2s !important; } #sidebar-splitter { display: none !important; } #sidebar-header { width:100%; border: 0 !important; } #sidebar { display: block !important; width: 100% !important; height: 100% !important; } /* Lesezeichensidebar Icon-Abstand zur linken Seite */ .sidebar-placesTreechildren[view="bookmarks-view"] { margin-left: -10px !important; } /* Lesezeichensidebar Icon-Abstand */ #bookmarks-view-children:-moz-tree-image { margin-right: 5px !important; } /* Suchsymbol in der Sidebar ausblenden */ .textbox-search-sign{ display:none !important; } textbox input.textbox-input::-moz-placeholder, #search-container input.textbox-input::-moz-placeholder, #urlbar input.textbox-input::-moz-placeholder { color: transparent !important; } /* Suchleiste Schrift-Größe einstellen */ .sidebar-placesTreechildren,sidebarheader,#sidebar-search-label,#search-box { font-size: 16px !important; font-family: Comic Sans MS, sans-serif !important; } /* Sidebar Hintergrundfarbe */ #sidebar { background: #faebd7 !important; opacity: 1 !important; } /* Lesezeichen-Sidebar Suchfeld leeren */ #search-box input::placeholder { color: transparent !important } /* Lesezeichen Sidebar öffnende Dreiecke entfernen */ #bookmarksPanel treechildren::-moz-tree-twisty(closed), #bookmarksPanel treechildren::-moz-tree-twisty(open){ height:0!important; width:0!important; display:none!important; } /* Lesezeichen verwalten */ treechildren::-moz-tree-image(container) { list-style-image: url('data:image/gif;base64,R0lGODlhEAAQAOZMAP/////MAF06AJhlAJNgAP//AP/lAP/UAJViAP/JANShAJRhAP/OAJRgAOy5AMaSAP/nAMyZAP/IAP/NAOazAP/RAMmVALaAAH5TAJNfAM2aAP/dT//XOv/KAOPOkMeRAP/nhOSxAOu4AP3KAOrTkv/nrv//1c6bAKdyAP/TAP/bPdWsMr6LA7iCALqGALiEAJNeAMCMAP/gcv/eYdGdAP/TEP/mgv/2y//gg/3JAP/ila97AP/aKsWPAJFbAJZgALeBAMiVAPC9AP/rOum2AHlQAP/4zP//z//jPpNdAP/LANixNP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEwALAAAAAAQABAAAAefgEyCg4SFhoeFDQ0LjIiCCyU5IwEBBAiXCAOEBDohFBREIg6jQgibODQKqgonDz0fPkkwDQMEMhYRERpBMUsAv8C1Mw8uLUAXKwA2EgkJDJoEGy8swAAgCZQMz0wEKigkN8wJHZQBFZrcPDsAHErllBMT6AQ1HkYVKQf6++hMGUgAhhgYSBAChH4/TBwpwLAhw35MMAiYSLFiEUcYmQQCADs=') !important; } /* Zeilenhöhe reduzieren */ .sidebar-placesTree treechildren::-moz-tree-row, .placesTree treechildren::-moz-tree-row { min-height: 20px !important; } }Mfg.
Endor -
Hallo Boersenfeger.
Bitte diese Version vom Script nochmals testen:
https://github.com/Endor8/userChr…CSSLoader.uc.js
Sollte jetzt verschiebbar sein.
Mfg.
Endor -
Hallo Sören.
Vielen Dank!
:klasse:
Mfg.
Endor -
-
-
Es gibt Änderungen an Scripten usw. die nur für bestimmte Benutzer Sinn
machen, für andere aber nutzlos sind, daher sendet man das dann
meistens per Konversation. Letztes mal war ich dann gezwungen
das Script per E-Mail zu senden, glücklicher Weise hatte ich die.
Mfg.
Endor
-
Frage, könnte man bei den nicht öffentlichen Konversationen,
das Zeichenlimit auch etwas erhöhen. Wollte letztens jemanden ein
Script per Konversation senden, ging aber auf Grund der Limitierungvon max 10.000 Zeichen nicht. Sonst haben wir überall 100.000 Zeichen,
das wäre eben auch bei den Konversationen sehr praktisch.
Mfg.
Endor -
Also das hier ist die Scriptversion die ich Boersenfeger gesendet habe:
HTML
Alles anzeigen// ==UserScript== // @name UserCSSLoader // @description CSS Codes - Styles laden und verwalten // @namespace http://d.hatena.ne.jp/Griever/ // @author Griever // @include main // @license MIT License // @compatibility Firefox 4 - 61* // @charset UTF-8 // @version 0.0.4g // @note Version 0.0.4.g ermoeglicht "Styles importieren" per Mittelklick und Verwendung // @note eines anderen Dateimanager (s. vFileManager in Zeile 62) // @note Frei verschiebbare Schaltfläche eingebaut von aborix // @note 0.0.4 Remove E4X // @note CSSEntry-Klasse erstellt // @note Style-Test-Funktion überarbeitet // @note Wenn die Datei gelöscht wurde, CSS beim Neu erstellen und Löschen des Menüs abbrechen // @note uc einlesen .uc.css temporäre Korrespondenz zum erneuten Lesen // ==/UserScript== /****** Bedienungsanleitung ****** Da der CSS-Ordner im Chrome-Ordner erstellt wurde, CSS-Dateien dort ablegen - speichern. Diejenigen, deren Dateiname mit "xul-" beginnen, diejenigen, die mit ".as.css" enden, sind AGENT_SHEET, andere außer USER_SHEET werden gelesen. Da der Inhalt der Datei nicht überprüft wird, darauf achten, @ Namespace Angabe nicht zu vergessen! CSS-Menü wird zur Menüleiste hinzugefügt Linksklick auf Stil, zum aktivieren/deaktivieren Mittelklick auf Stil zum aktivieren/deaktivieren, ohne Menü zu schließen Rechtsklick auf Stil zum Öffnen im Editor Verwenden des in "view_source.editor.path" angegebenen Editors Ordner kann geändert werden, indem ein Pfad in "UserCSSLoader.FOLDER" eingefügt wird **** Anleitung Ende ****/ (function(){ let { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; if (!window.Services) Cu.import("resource://gre/modules/Services.jsm"); // Wenn beim Start ein anderes Fenster angezeigt wird (das zweite Fenster), wird es beendet let list = Services.wm.getEnumerator("navigator:browser"); while(list.hasMoreElements()){ if(list.getNext() != window) return; } if (window.UCL) { window.UCL.destroy(); delete window.UCL; } window.UCL = { vFileManager: 'C:\\Programme\\totalcmd\\TOTALCMD.EXE', //vFileManager: '', USE_UC: "UC" in window, AGENT_SHEET: Ci.nsIStyleSheetService.AGENT_SHEET, USER_SHEET : Ci.nsIStyleSheetService.USER_SHEET, readCSS : {}, get disabled_list() { let obj = []; try { obj = this.prefs.getCharPref("disabled_list").split("|"); } catch(e) {} delete this.disabled_list; return this.disabled_list = obj; }, get prefs() { delete this.prefs; return this.prefs = Services.prefs.getBranch("UserCSSLoader.") }, get styleSheetServices(){ delete this.styleSheetServices; return this.styleSheetServices = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); }, get FOLDER() { let aFolder; try { // UserCSSLoader.FOLDER verwenden let folderPath = this.prefs.getCharPref("FOLDER"); aFolder = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile) aFolder.initWithPath(folderPath); } catch (e) { aFolder = Services.dirsvc.get("UChrm", Ci.nsIFile); aFolder.appendRelativePath("CSS"); } if (!aFolder.exists() || !aFolder.isDirectory()) { aFolder.create(Ci.nsIFile.DIRECTORY_TYPE, 0664); } delete this.FOLDER; return this.FOLDER = aFolder; }, getFocusedWindow: function() { let win = document.commandDispatcher.focusedWindow; if (!win || win == window) win = content; return win; }, init: function() { const cssmenu = $C("menu", { id: "usercssloader-menu", label: "CSS", accesskey: "C", onclick: "if (event.button == 1) UCL.rebuild()" }); const menupopup = $C("menupopup", { id: "usercssloader-menupopup" }); cssmenu.appendChild(menupopup); let menu = $C("menu", { label: "Style Loader Menü", accesskey: "M" }); menupopup.appendChild(menu); let mp = $C("menupopup", { id: "usercssloader-submenupopup" }); menu.appendChild(mp); mp.appendChild($C("menuitem", { label: "Styles importieren", accesskey: "R", acceltext: "Alt + R", oncommand: "UCL.rebuild();" })); mp.appendChild($C("menuseparator")); mp.appendChild($C("menuitem", { label: "CSS Datei erstellen", accesskey: "D", oncommand: "UCL.create();" })); mp.appendChild($C("menuitem", { label: "CSS Ordner öffnen", accesskey: "O", oncommand: "UCL.openFolder();" })); mp.appendChild($C("menuitem", { label: "userChrome.css bearbeiten", hidden: false, oncommand: "UCL.editUserCSS(\'userChrome.css\');" })); mp.appendChild($C("menuitem", { label: "userContent.css bearbeiten", hidden: false, oncommand: "UCL.editUserCSS(\'userContent.css\');" })); mp.appendChild($C("menuseparator")); mp.appendChild($C("menuitem", { label: "Style Test (Chrome)", id: "usercssloader-test-chrome", hidden: true, accesskey: "C", oncommand: "UCL.styleTest(window);" })); mp.appendChild($C("menuitem", { label: "Style Test (Web)", id: "usercssloader-test-content", hidden: true, accesskey: "W", oncommand: "UCL.styleTest();" })); mp.appendChild($C("menuitem", { label: "Styles dieser Seite auf userstyles.org finden", accesskey: "S", oncommand: "UCL.searchStyle();" })); menu = $C("menu", { label: ".uc.css", accesskey: "U", hidden: !UCL.USE_UC }); menupopup.appendChild(menu); mp = $C("menupopup", { id: "usercssloader-ucmenupopup" }); menu.appendChild(mp); mp.appendChild($C("menuitem", { label: "Importieren(.uc.js)", oncommand: "UCL.UCrebuild();" })); mp.appendChild($C("menuseparator", { id: "usercssloader-ucseparator" })); CustomizableUI.createWidget({ id: 'usercssloader-menu-item', type: 'custom', defaultArea: CustomizableUI.AREA_NAVBAR, onBuild: function(aDocument) { let toolbaritem = aDocument.createElementNS('http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul', 'toolbaritem'); toolbaritem.id = 'usercssloader-menu-item'; toolbaritem.className = 'chromeclass-toolbar-additional'; return toolbaritem; } }); $('usercssloader-menu-item').appendChild(cssmenu); let refNode = $('helpMenu'); refNode.parentNode.insertBefore(cssmenu, refNode.nextSibling); $("mainKeyset").appendChild($C("key", { id: "usercssloader-rebuild-key", oncommand: "UCL.rebuild();", key: "R", modifiers: "alt", })); this.rebuild(); this.initialized = true; if (UCL.USE_UC) { setTimeout(function() { UCL.UCcreateMenuitem(); }, 1000); } window.addEventListener("unload", this, false); }, uninit: function() { const dis = []; for (let x of Object.keys(this.readCSS)) { if (!this.readCSS[x].enabled) dis.push(x); } this.prefs.setCharPref("disabled_list", dis.join("|")); window.removeEventListener("unload", this, false); }, destroy: function() { var i = document.getElementById("usercssloader-menu"); if (i) i.parentNode.removeChild(i); var i = document.getElementById("usercssloader-rebuild-key"); if (i) i.parentNode.removeChild(i); this.uninit(); }, handleEvent: function(event) { switch(event.type){ case "unload": this.uninit(); break; } }, rebuild: function() { let ext = /\.css$/i; let not = /\.uc\.css/i; let files = this.FOLDER.directoryEntries.QueryInterface(Ci.nsISimpleEnumerator); while (files.hasMoreElements()) { let file = files.getNext().QueryInterface(Ci.nsIFile); if (!ext.test(file.leafName) || not.test(file.leafName)) continue; let CSS = this.loadCSS(file); CSS.flag = true; } for (let leafName of Object.keys(this.readCSS)) { const CSS = this.readCSS[leafName]; if (!CSS.flag) { CSS.enabled = false; delete this.readCSS[leafName]; } delete CSS.flag; this.rebuildMenu(leafName); } if (this.initialized) { if (typeof(StatusPanel) !== "undefined") StatusPanel._label = "Style importiert"; else XULBrowserWindow.statusTextField.label = "Styles importieren"; } }, loadCSS: function(aFile) { var CSS = this.readCSS[aFile.leafName]; if (!CSS) { CSS = this.readCSS[aFile.leafName] = new CSSEntry(aFile); if (this.disabled_list.indexOf(CSS.leafName) === -1) { CSS.enabled = true; } } else if (CSS.enabled) { CSS.enabled = true; } return CSS; }, rebuildMenu: function(aLeafName) { var CSS = this.readCSS[aLeafName]; var menuitem = document.getElementById("usercssloader-" + aLeafName); if (!CSS) { if (menuitem) menuitem.parentNode.removeChild(menuitem); return; } if (!menuitem) { menuitem = document.createXULElement("menuitem"); menuitem.setAttribute("label", aLeafName); menuitem.setAttribute("id", "usercssloader-" + aLeafName); menuitem.setAttribute("class", "usercssloader-item " + (CSS.SHEET == this.AGENT_SHEET? "AGENT_SHEET" : "USER_SHEET")); menuitem.setAttribute("type", "checkbox"); menuitem.setAttribute("autocheck", "false"); menuitem.setAttribute("oncommand", "UCL.toggle('"+ aLeafName +"');"); menuitem.setAttribute("onclick", "UCL.itemClick(event);"); document.getElementById("usercssloader-menupopup").appendChild(menuitem); } menuitem.setAttribute("checked", CSS.enabled); }, toggle: function(aLeafName) { var CSS = this.readCSS[aLeafName]; if (!CSS) return; CSS.enabled = !CSS.enabled; this.rebuildMenu(aLeafName); }, itemClick: function(event) { if (event.button == 0) return; event.preventDefault(); event.stopPropagation(); let label = event.currentTarget.getAttribute("label"); if (event.button == 1) { this.toggle(label); } else if (event.button == 2) { closeMenus(event.target); this.edit(this.getFileFromLeafName(label)); } }, getFileFromLeafName: function(aLeafName) { let f = this.FOLDER.clone(); f.QueryInterface(Ci.nsIFile); // use appendRelativePath f.appendRelativePath(aLeafName); return f; }, styleTest: function(aWindow) { aWindow || (aWindow = this.getFocusedWindow()); new CSSTester(aWindow, function(tester){ if (tester.saved) UCL.rebuild(); }); }, searchStyle: function() { let word; try { word = gBrowser.currentURI.host; } catch { word = gBrowser.currentURI.spec; } openWebLinkIn("https://userstyles.org/styles/search/" + word, "tab", {}); }, openFolder:function(){ if (this.vFileManager.length != 0) { var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile); var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess); var args=[this.FOLDER.path]; file.initWithPath(this.vFileManager); process.init(file); // Verzeichnis mit anderem Dateimanager öffnen process.run(false, args, args.length); } else { // Verzeichnis mit Dateimanager des Systems öffnen this.FOLDER.launch(); } }, editUserCSS: function(aLeafName) { let file = Services.dirsvc.get("UChrm", Ci.nsIFile); file.appendRelativePath(aLeafName); this.edit(file); }, edit: function(aFile) { var editor = Services.prefs.getCharPref("view_source.editor.path"); if (!editor) return alert("Unter about:config den vorhandenen Schalter:\n view_source.editor.path mit dem Editorpfad ergänzen"); try { var UI = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter); UI.charset = window.navigator.platform.toLowerCase().indexOf("win") >= 0? "Shift_JIS": "UTF-8"; var path = UI.ConvertFromUnicode(aFile.path); var app = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile); app.initWithPath(editor); var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess); process.init(app); process.run(false, [path], 1); } catch (e) {} }, create: function(aLeafName) { if (!aLeafName) aLeafName = prompt("Name des Styles", dateFormat(new Date(), "%Y_%m%d_%H%M%S")); if (aLeafName) aLeafName = aLeafName.replace(/\s+/g, " ").replace(/[\\/:*?\"<>|]/g, ""); if (!aLeafName || !/\S/.test(aLeafName)) return; if (!/\.css$/.test(aLeafName)) aLeafName += ".css"; let file = this.getFileFromLeafName(aLeafName); this.edit(file); }, UCrebuild: function() { let re = /^file:.*\.uc\.css(?:\?\d+)?$/i; let query = "?" + new Date().getTime(); Array.slice(document.styleSheets).forEach(function(css){ if (!re.test(css.href)) return; if (css.ownerNode) { css.ownerNode.parentNode.removeChild(css.ownerNode); } let pi = document.createProcessingInstruction('xml-stylesheet','type="text/css" href="'+ css.href.replace(/\?.*/, '') + query +'"'); document.insertBefore(pi, document.documentElement); }); UCL.UCcreateMenuitem(); }, UCcreateMenuitem: function() { let sep = $("usercssloader-ucseparator"); let popup = sep.parentNode; if (sep.nextSibling) { let range = document.createRange(); range.setStartAfter(sep); range.setEndAfter(popup.lastChild); range.deleteContents(); range.detach(); } let re = /^file:.*\.uc\.css(?:\?\d+)?$/i; Array.slice(document.styleSheets).forEach(function(css) { if (!re.test(css.href)) return; let fileURL = decodeURIComponent(css.href).split("?")[0]; let aLeafName = fileURL.split("/").pop(); let m = document.createXULElement("menuitem"); m.setAttribute("label", aLeafName); m.setAttribute("tooltiptext", fileURL); m.setAttribute("id", "usercssloader-" + aLeafName); m.setAttribute("type", "checkbox"); m.setAttribute("autocheck", "false"); m.setAttribute("checked", "true"); m.setAttribute("oncommand", "this.setAttribute('checked', !(this.css.disabled = !this.css.disabled));"); m.setAttribute("onclick", "UCL.UCItemClick(event);"); m.css = css; popup.appendChild(m); }); }, UCItemClick: function(event) { if (event.button == 0) return; event.preventDefault(); event.stopPropagation(); if (event.button == 1) { event.target.doCommand(); } else if (event.button == 2) { closeMenus(event.target); let fileURL = event.currentTarget.getAttribute("tooltiptext"); let file = Services.io.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler).getFileFromURLSpec(fileURL); this.edit(file); } }, }; function CSSEntry(aFile) { this.path = aFile.path; this.leafName = aFile.leafName; this.lastModifiedTime = 1; this.SHEET = /^xul-|\.as\.css$/i.test(this.leafName) ? Ci.nsIStyleSheetService.AGENT_SHEET: Ci.nsIStyleSheetService.USER_SHEET; } CSSEntry.prototype = { sss: Components.classes["@mozilla.org/content/style-sheet-service;1"] .getService(Components.interfaces.nsIStyleSheetService), _enabled: false, get enabled() { return this._enabled; }, set enabled(isEnable) { var aFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsIFile) aFile.initWithPath(this.path); var isExists = aFile.exists(); // Wenn die Datei existiert true var lastModifiedTime = isExists ? aFile.lastModifiedTime : 0; var isForced = this.lastModifiedTime != lastModifiedTime; // Wenn es eine Änderung in der Datei gibt true var fileURL = Services.io.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler).getURLSpecFromFile(aFile); var uri = Services.io.newURI(fileURL, null, null); if (this.sss.sheetRegistered(uri, this.SHEET)) { // Wenn diese Datei bereits gelesen wurde if (!isEnable || !isExists) { this.sss.unregisterSheet(uri, this.SHEET); } else if (isForced) { // Nach Stornierung erneut einlesen this.sss.unregisterSheet(uri, this.SHEET); this.sss.loadAndRegisterSheet(uri, this.SHEET); } } else { // Datei wurde nicht gelesen if (isEnable && isExists) { this.sss.loadAndRegisterSheet(uri, this.SHEET); } } if (this.lastModifiedTime !== 1 && isEnable && isForced) { log(this.leafName + " wurde aktualisiert"); } this.lastModifiedTime = lastModifiedTime; return this._enabled = isEnable; }, }; function CSSTester(aWindow, aCallback) { this.win = aWindow || window; this.doc = this.win.document; this.callback = aCallback; this.init(); } CSSTester.prototype = { sss: Components.classes["@mozilla.org/content/style-sheet-service;1"] .getService(Components.interfaces.nsIStyleSheetService), preview_code: "", saved: false, init: function() { this.dialog = openDialog( "data:text/html;charset=utf8,"+encodeURIComponent('<!DOCTYPE HTML><html lang="ja"><head><title>CSSTester</title></head><body></body></html>'), "", "width=550,height=400,dialog=no"); this.dialog.addEventListener("load", this, false); }, destroy: function() { this.preview_end(); this.dialog.removeEventListener("unload", this, false); this.previewButton.removeEventListener("click", this, false); this.saveButton.removeEventListener("click", this, false); this.closeButton.removeEventListener("click", this, false); }, handleEvent: function(event) { switch(event.type) { case "click": if (event.button != 0) return; if (this.previewButton == event.currentTarget) { this.preview(); } else if (this.saveButton == event.currentTarget) { this.save(); } else if (this.closeButton == event.currentTarget) { this.dialog.close(); } break; case "load": var doc = this.dialog.document; doc.body.innerHTML = '\ <style type="text/css">\ :not(input):not(select) { padding: 0px; margin: 0px; }\ table { border-spacing: 0px; }\ body, html, #main, #textarea { width: 100%; height: 100%; }\ #textarea { font-family: monospace; }\ </style>\ <table id="main">\ <tr height="100%">\ <td colspan="4"><textarea id="textarea"></textarea></td>\ </tr>\ <tr height="40">\ <td><input type="button" value="Vorschau" id="Vorschau"/></td>\ <td><input type="button" value="Speichern" id="Speichern"/></td>\ <td width="80%"><span class="log"></span></td>\ <td><input type="button" value="Schließen" id="Schliessen"/></td>\ </tr>\ </table>\ '; this.textbox = doc.querySelector("textarea"); this.previewButton = doc.querySelector('input[value="Vorschau"]'); this.saveButton = doc.querySelector('input[value="Speichern"]'); this.closeButton = doc.querySelector('input[value="Schließen"]'); this.logField = doc.querySelector('.log'); var code = "@namespace url(" + this.doc.documentElement.namespaceURI + ");\n"; code += this.win.location.protocol.indexOf("http") === 0? "@-moz-document domain(" + this.win.location.host + ") {\n\n\n\n}": "@-moz-document url(" + this.win.location.href + ") {\n\n\n\n}"; this.textbox.value = code; this.dialog.addEventListener("unload", this, false); this.previewButton.addEventListener("click", this, false); this.saveButton.addEventListener("click", this, false); this.closeButton.addEventListener("click", this, false); this.textbox.focus(); let p = this.textbox.value.length - 3; this.textbox.setSelectionRange(p, p); break; case "unload": this.destroy(); this.callback(this); break; } }, preview: function() { var code = this.textbox.value; if (!code || !/\:/.test(code)) return; code = "data:text/css;charset=utf-8," + encodeURIComponent(this.textbox.value); if (code == this.preview_code) return; this.preview_end(); var uri = Services.io.newURI(code, null, null); this.sss.loadAndRegisterSheet(uri, Ci.nsIStyleSheetService.AGENT_SHEET); this.preview_code = code; this.log("Preview"); }, preview_end: function() { if (this.preview_code) { let uri = Services.io.newURI(this.preview_code, null, null); this.sss.unregisterSheet(uri, Ci.nsIStyleSheetService.AGENT_SHEET); this.preview_code = ""; } }, save: function() { var data = this.textbox.value; if (!data) return; var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); fp.init(window, "", Ci.nsIFilePicker.modeSave); fp.appendFilter("CSS Files","*.css"); fp.defaultExtension = "css"; if (window.UCL) fp.displayDirectory = UCL.FOLDER; var res = fp.show(); if (res != fp.returnOK && res != fp.returnReplace) return; var suConverter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Ci.nsIScriptableUnicodeConverter); suConverter.charset = "UTF-8"; data = suConverter.ConvertFromUnicode(data); var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream); foStream.init(fp.file, 0x02 | 0x08 | 0x20, 0664, 0); foStream.write(data, data.length); foStream.close(); this.saved = true; }, log: function() { this.logField.textContent = dateFormat(new Date(), "%H:%M:%S") + ": " + $A(arguments); } }; UCL.init(); function $(id) { return document.getElementById(id); } function $A(arr) { return Array.slice(arr); } function $C(name, attr) { var el = document.createXULElement(name); if (attr) Object.keys(attr).forEach(function(n) { el.setAttribute(n, attr[n]) }); return el; } function dateFormat(date, format) { format = format.replace("%Y", ("000" + date.getFullYear()).substr(-4)); format = format.replace("%m", ("0" + (date.getMonth()+1)).substr(-2)); format = format.replace("%d", ("0" + date.getDay()).substr(-2)); format = format.replace("%H", ("0" + date.getHours()).substr(-2)); format = format.replace("%M", ("0" + date.getMinutes()).substr(-2)); format = format.replace("%S", ("0" + date.getSeconds()).substr(-2)); return format; } function log() { Application.console.log(Array.slice(arguments)); } })();und das der CSS Code dazu den ich hier verwende:
CSS
Alles anzeigen@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); @-moz-document url(chrome://browser/content/browser.xhtml){ #usercssloader-menu { -moz-appearance:none!important; margin-right: -6px !important; margin-left: -1px !important; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAADJklEQVR4Xi3Pb0yVdRjG8e%2Fze57ncDrAOWwRhDQ7xYAMlAgIBW2txaio5TvMzZa68oWtzRdKbXbIpWyOzcWLWqXkFjUtsIksW72wuTVx%2BEJHCxhkSCNoKLYDwuH8e66eNV98dr24t%2Fu%2BLwsAoKsucqg4tFS4kiTtge4PFAkRksADGdsyua4JXJ7ITH0yQw%2BABTB3sHGipGNjJX8MgzGw6oEBQi5kPYinQBYEbDDAX5PEulJXPhqn2bQE2Fayfa2S8THOfu%2FwzTkDzmOQV8nAkOHMoIFgmS9K3w%2Fi5DmP1fwqdrbRFIR6euqJ6btc2Y4jsGWM0emOWrU2FAtQRTSiid7n9EJtkQCVlebrUle9lnuLVA3v09%2FG8diLCFxp%2BDVprF2a2KHqsrACtqVbQy9L8T2qq4goaKOpz5uka22Kn1yn2gBHOPMSx9o3obJokbS8R%2Fp3txTfK918Q%2B2tjwrQYPcWaW6Xdj5fKkB9B2uks%2Bv1VICYSWXQjia4eWuB8z2%2F0%2F%2FpGMMD04yP3qFzfzXBoE3sszGmR27Tubuc3KDDsf4ZsME2iO4GjuqXQh1orxDwv1OxBsX2VQlQcWGObnzdog%2F3bhCg0uIHNPLFVqnf%2F8DlA2ctDSTgxNFnOHFgE7jAg7kQcjnS8TRgQcCiprGQzncrIZ0i%2Fu0so7lLODlgsh6QSMNCAix8BhJJNH6b5NwyFNhwLwWuB%2FNxEoemudi9wMT8Cq4LBrDwgLUULK%2FBPR9%2BjC4ytPUC17%2F8DR6CpYEplt%2BeJTX7OH9HbEL5NvKwjGvj4AHprC8DSZ%2B%2FzHJgI%2BuI%2BxdvbL9E%2BJRLJr%2BSr5LXKd8foqY8QjqN7fxzlzhaAy8LGYHnQTxJ3hNhFlptCi4XsP7PEoaD4mr4KlveeZjNG4qYvDbKyipJolCXOI70U630Y6uvRfrZzyuvSKOvavK9Kp2OFqv3zagWLzb7s21aubBZ519HFjzrg8NP8utbu2hWMIyyHpYBYwyOa2Hn2cwuJAiHAthp%2Be087s4n6e5LjwzeodECAKiAffk5PJLOkJKFACzLZ8B27jfMYgUM7mKSuzPwMcB%2F6Jh%2FV5xUni0AAAAASUVORK5CYII%3D") no-repeat !important; background-position:1px 6px!important; } #usercssloader-menu:hover { -moz-appearance:none !important; margin-left: -5px !important; margin-right: -3px !important; padding-right: 1px !important; background: #E3E3E3 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAADJklEQVR4Xi3Pb0yVdRjG8e%2Fze57ncDrAOWwRhDQ7xYAMlAgIBW2txaio5TvMzZa68oWtzRdKbXbIpWyOzcWLWqXkFjUtsIksW72wuTVx%2BEJHCxhkSCNoKLYDwuH8e66eNV98dr24t%2Fu%2BLwsAoKsucqg4tFS4kiTtge4PFAkRksADGdsyua4JXJ7ITH0yQw%2BABTB3sHGipGNjJX8MgzGw6oEBQi5kPYinQBYEbDDAX5PEulJXPhqn2bQE2Fayfa2S8THOfu%2FwzTkDzmOQV8nAkOHMoIFgmS9K3w%2Fi5DmP1fwqdrbRFIR6euqJ6btc2Y4jsGWM0emOWrU2FAtQRTSiid7n9EJtkQCVlebrUle9lnuLVA3v09%2FG8diLCFxp%2BDVprF2a2KHqsrACtqVbQy9L8T2qq4goaKOpz5uka22Kn1yn2gBHOPMSx9o3obJokbS8R%2Fp3txTfK918Q%2B2tjwrQYPcWaW6Xdj5fKkB9B2uks%2Bv1VICYSWXQjia4eWuB8z2%2F0%2F%2FpGMMD04yP3qFzfzXBoE3sszGmR27Tubuc3KDDsf4ZsME2iO4GjuqXQh1orxDwv1OxBsX2VQlQcWGObnzdog%2F3bhCg0uIHNPLFVqnf%2F8DlA2ctDSTgxNFnOHFgE7jAg7kQcjnS8TRgQcCiprGQzncrIZ0i%2Fu0so7lLODlgsh6QSMNCAix8BhJJNH6b5NwyFNhwLwWuB%2FNxEoemudi9wMT8Cq4LBrDwgLUULK%2FBPR9%2BjC4ytPUC17%2F8DR6CpYEplt%2BeJTX7OH9HbEL5NvKwjGvj4AHprC8DSZ%2B%2FzHJgI%2BuI%2BxdvbL9E%2BJRLJr%2BSr5LXKd8foqY8QjqN7fxzlzhaAy8LGYHnQTxJ3hNhFlptCi4XsP7PEoaD4mr4KlveeZjNG4qYvDbKyipJolCXOI70U630Y6uvRfrZzyuvSKOvavK9Kp2OFqv3zagWLzb7s21aubBZ519HFjzrg8NP8utbu2hWMIyyHpYBYwyOa2Hn2cwuJAiHAthp%2Be087s4n6e5LjwzeodECAKiAffk5PJLOkJKFACzLZ8B27jfMYgUM7mKSuzPwMcB%2F6Jh%2FV5xUni0AAAAASUVORK5CYII%3D") no-repeat !important; background-position:5px 6px!important; } #usercssloader-menu > .menu-text, #usercssloader-menu > .menu-right { display: none !important; } }Totalcommander ist in obiger Version jetzt auch aktiviert.
Hatte ich in der Version in der E-Mail nicht bedacht.
Also Boersenfeger bitte nochmals testen!!!Mfg.
Endor