Wow, es funktioniert
Änderungen in der userChrome.css werden per Linksklick ausgeführt.
Änderungen in der userContent.css per Rechtsklick hier zumindest nicht.
Muss dazu etwas extra aktiviert oder eingestellt werden?
Ich habe dazu nichts gefunden.
Wow, es funktioniert
Änderungen in der userChrome.css werden per Linksklick ausgeführt.
Änderungen in der userContent.css per Rechtsklick hier zumindest nicht.
Muss dazu etwas extra aktiviert oder eingestellt werden?
Ich habe dazu nichts gefunden.
Änderungen in der userChrome.css werden per Linksklick ausgeführt.
Änderungen in der userContent.css per Rechtsklick hier zumindest nicht.
Muss dazu etwas extra aktiviert oder eingestellt werden?
Ich habe dazu nichts gefunden.
Oh sorry, ich habe nur einen Kurztest gemacht und nur die Funktion bei der userChrome.css getestet.
und nur die Funktion bei der userChrome.css getestet.
Hallo Mira, danke für die Antwort
Dann funktioniert das mit der userContent.css bei dir also auch nicht?
Und woher stammt das Skript, eventuell gibt es da noch ein paar Informationen dazu,
also zum Skript?
Original source ist unbekannt, ich habe das Skript von einem anderen Studenten erhalten.
Änderungen in der userContent.css per Rechtsklick hier zumindest nicht.
Die rechte Schaltfläche prüfe ich auf CSS für Firefox View Next, es funktioniert, userContent.css wird neu geladen. Es ist durchaus möglich, dass etwas im Skript korrigiert werden muss, aber ich weiß es nicht.
es funktioniert, userContent.css wird neu geladen.
Auch da bei mir nicht
Melde jehorsamst: dat tut
Beides
Ich hab lediglich die Codes "aufgeräumt" = eingerückt und dann in 2 Files Farben zum Test geändert:
userChrome.css: 03_leistenfolge+farben_89.css
userContent.css: about_downloads.css
Beide werden jeweils per Import aus Unterverzeichnissen (css bzw contentCSS) geladen.
Ich hab lediglich die Codes "aufgeräumt" = eingerückt
Kannst du die dann bitte mal hier posten?
96_CSS-Vorschau.uc.js:
// reload_userChrome.uc.js = 96_CSS-Vorschau.uc.js
// Applying changes to userChrome.css and userContent.css styles without restarting Firefox
// The file reload_userChrome.txt should be in the same folder with the script
window.__SSi == "window0" && CustomizableUI.createWidget({
id: "Reload_userChrome",
label: "Reload userChrome",
localized: false,
onCreated(btn) {
var u = Services.io.newURI;
var code = Cu.readUTF8URI(u(
u(Components.stack.filename).resolve("reload_userChrome.txt")
)).replace(
'Components.utils.import("resource://gre/modules/Services.jsm", {})',
"Cu.getGlobalForObject(Cu)"
);
var del = function() {
this.previousSibling.remove();
this.remove();
};
(this.onCreated = btn => {
btn.setAttribute("image", "data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABPElEQVQ4ja3TsU6UQRQF4G8D7jaS2EqhwMaYSGHnI1BQ+ATaUtqR0BJIDGjhMxhKKgLxEQStDFYmGpTKqC8grMdiZ80w4d/KSW5xM/ece2fuOTQnDMOL8D78DL/CSdgJd0vN7XAeDmrgbHgZRiEdcRk2w2rJ//QmYBxhpfB9wR4+4AaW8RQL1f1S3f151WU7Y1D7tEHYbacSlqqxt1tgAd8PayVOW4KtkpyFfgfBu44/Gc3iUal73eP3dQTYxy3MXOV1IDwIG2GuA/z/T7gZnoWh8Cp8buJTWJ9CMPm3Q1OEc9wBHoRvpWZLAzqt1nWvg2BnsoGw0BKk+GBwDbBfgf9pppfxOrgqz6/GUv6IER7iiWImvMHjHpf1BKvFKBdTzDQqU8zUox0Va86X/E7xxtvwI3wvStwNi+3T/gL+gPNd4cyuEQAAAABJRU5ErkJggg==");
btn.defaultContextId = "toolbar-context-menu";
var win = btn.ownerGlobal;
var wdp = new win.DOMParser();
var parser = class {
parseFromString(...args) {
var doc = wdp.parseFromSafeString(...args);
doc.documentElement.lastChild.appendChild = del;
return doc;
}
}
win.setTimeout(() => new win.Function("DOMParser", code).call(btn, parser), 50);
})(btn);
}
});
// 96_CSS-Vorschau.uc.js
// 231106: lenny2
// https://www.camp-firefox.de/forum/thema/112673-userchrome-js-scripte-f%C3%BCr-den-fuchs-diskussion/?postID=1239120#post1239120
Alles anzeigen
reload_userChrome.txt:
// reload_userChrome.txt
// Applying changes to userChrome.css and userContent.css styles without restarting Firefox
// Place in the same folder as the reload_userChrome.uc.js script
// To deactivate the reload function of userContent.css, comment out lines 82-88, edit tooltiptext line 11
var c = msg => Services.console.logStringMessage(String(msg)), i = obj => inspectObject(obj), n = node => inspectDOMNode(node);
(obj => {
this.onclick = obj.click.bind(obj);
this.oncontextmenu = obj.contextmenu.bind(obj);
this.tooltipText = "L: Reload userChrome.css\nR: Reload userContent.css";
})
({
async click(e) {
if (e.button == 1) return gShowPopup(self);
if (e.button || !this.chromeSheet) return;
await this.reload(this.chromeSheet);
this.restyle(0);
},
re: /^(?:web.*|file|extension|privilegedabout)$/,
get url() {
delete this.url;
return this.url = `chrome://extensions/content/dummy.x${
parseInt(Services.appinfo.platformVersion) >= 74 ? "htm" : "u"
}l`;
},
async contextmenu(e) {
if (e.ctrlKey || e.shiftKey || e.detail != 1 || !this.contentSheetURL) return;
e.preventDefault();
var count = Services.ppmm.childCount, one = count == 1;
var data = await this.reloadTab(this.url, one ? false : {});
if (one) this.reloadTab();
else if (data) {
var url = "data:," + encodeURIComponent(
self.Help + this.contentSheetURL + '", ' + JSON.stringify(data) + ");"
);
for(var ind = 0; ind < count; ind++) {
var child = Services.ppmm.getChildAt(ind);
var rt = child.remoteType;
rt && this.re.test(rt) && child.loadProcessScript(url, false);
}
}
this.restyle(250);
},
async reload(sheet, obj) {
try {var style = await (await fetch(sheet.href)).text();}
catch (ex) {return obj;}
InspectorUtils.parseStyleSheet(sheet, style);
if (obj) obj[sheet.href] = style;
for(var ind = 0, len = sheet.cssRules.length; ind < len; ind++) {
var rule = sheet.cssRules.item(ind);
rule.type == rule.IMPORT_RULE
&& rule.styleSheet.href.startsWith("file:///")
&& await this.reload(rule.styleSheet, obj);
}
return obj;
},
reloadTab(url, obj) {
var tab = gBrowser.addTab(url, {skipAnimation: true, triggeringPrincipal: document.nodePrincipal});
tab.style.setProperty("display", "none", "important");
return new Promise(resolve => {
var result, stop, destroy = () => {
if (!stop) resolve(result), gBrowser.removeTab(tab), stop = true;
}
setTimeout(destroy, 500);
try {
tab.linkedBrowser.addEventListener("DOMContentLoaded", async e => {
var sheet = this.getSheet(e.target, this.contentSheetURL);
if (sheet) result = await this.reload(sheet, obj);
destroy();
}, {once: true});
} catch(ex) {
destroy();
}
});
},
getSheet(doc, href) {
var sheets = InspectorUtils.getAllStyleSheets(doc);
return sheets.find(sheet => sheet.href == href);
},
get contentSheetURL() {
var file = Services.dirsvc.get("UChrm", Ci.nsIFile);
file.append("userContent.css");
if (!file.exists()) return null;
delete this.contentSheetURL;
return this.contentSheetURL = Services.io.newFileURI(file).spec;
},
get restyle() {
var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
var uri = Services.io.newURI("data:text/css,:root{}"), type = sss.USER_SHEET;
delete this.restyle; return this.restyle = delay => setTimeout(() => {
sss.loadAndRegisterSheet(uri, type);
sss.unregisterSheet(uri, type);
}, delay);
},
get chromeSheet() {
var file = Services.dirsvc.get("UChrm", Ci.nsIFile);
file.append("userChrome.css");
if (!file.exists()) return null;
var href = Services.io.newFileURI(file).spec;
var sheet = this.getSheet(document, href);
if (!sheet) return null;
delete this.chromeSheet; return this.chromeSheet = sheet;
}
});
Alles anzeigen
03_leistenfolge+farben_89.css
/* 03_leistenfolge+farben_89.css
GEWÜNSCHTE Leisten-Farben
220609: FF89neu
Weit vorne, damit ich auch mitbekommne, was, wo, warum oder nicht ;)
*/
/*
Titelzeile = #titlebar = unveränderbar, WIN-bestimmt
#toolbar-menubar = Menü-Bereich = 1 = coral
#fp-statusbar-2 = Status-bar = 2 = gainsboro = Suchen+AddOns
#PersonalToolbar = Lesezeichen-Bereich = 3 = yellow
#nav-bar = Navigations-Bereich = 4 = cornflowerblue = aktuelle URL und diverses
#TabsToolbar = TAB-Bereich = 5 = default Farbe = #eeeeee =helles grau
Anmerkung:
Nach einem Kurzzeittest mit "Gold" scheint mir ein zu einheitliches Farb-Layout nicht zu liegen...
230412: Vorbereitung FF113
*/
@-moz-document url-prefix("chrome://browser/content/browser.xhtml") {
#toolbar-menubar {
background: coral!important;
}
#fp-statusbar-2 {
background: gainsboro !important; /*gainsboro, wenn oben ;)*/
/* background: sandybrown !important; */ /*sandybrown wenn unten ;)*/
}
#PersonalToolbar {
background: yellow !important;
/* background: pink !important; */
/*pink zum rumtesten*/
}
#nav-bar {
order: 100 !important; /*ab FF113 ? */
-moz-box-ordinal-group: 100 !important; /*funktioniert irgendwie :o */
background: lightskyblue !important; /* lightskyblue */
order: 100 !important;
}
#TabsToolbar {
background: #eeeeee !important; /* #eeeeee=helles grau; pink zum rumtesten*/
}
}
Alles anzeigen
about_downloads.css
/* about:downloads anpassen*/
/* ACHTUNG !!! das ist für wenns im TAB auftaucht */
/* und das gehört in den content-Bereichwegen about: */
/* 211217 Nachfragen/Antworten/Einbau:
https://www.camp-firefox.de/forum/thema/133984/?postID=1192861#post1192861
*/
/* 220922 für ALLE Fenster
sagt Dharkness: https://www.camp-firefox.de/forum/thema/135293
*/
button.downloadButton.downloadIconShow {
color: white !important;
border: 2px solid black !important;
border-radius: 5px !important;
background: lightgreen!important;
margin: 2px !important;
}
button.downloadButton.downloadIconShow:hover {
color: black!important;
border: 2px solid black !important;
border-radius: 5px !important;
background: coral!important;
margin: 2px !important;
}
/* 220923: about:downloads den Leerbereich anpassen*/
#downloadsListBox{
border: 4px solid black !important;
background-color: gold !important;
}
#contentAreaDownloadsView{
border: 4px solid black !important;
background-color: yellow !important;
/* background-color: blue !important; */
}
/* 211231: Fortschritt bunt*/
/* Andy: https://www.camp-firefox.de/forum/thema/134010/?postID=1193247#post1193247 */
.downloadProgress {
appearance: none !important;
height: 10px !important;
background-color: yellow !important;
}
.downloadProgress::-moz-progress-bar {
background-color: red !important;
height: 10px !important;
}
.downloadProgress[paused]::-moz-progress-bar {
background-color: lightgreen !important;
}
Alles anzeigen
hth...
96_CSS-Vorschau.uc.js:
Danke dafür, aber hier funktioniert es damit in der userContent.css auch nicht.
Hülfäää
Ich kriegs mal wieder nicht hin.
Wie ersetze ich das base64
btn.setAttribute("image", "data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABPElEQVQ4ja3TsU6UQRQF4G8D7jaS2EqhwMaYSGHnI1BQ+ATaUtqR0BJIDGjhMxhKKgLxEQStDFYmGpTKqC8grMdiZ80w4d/KSW5xM/ece2fuOTQnDMOL8D78DL/CSdgJd0vN7XAeDmrgbHgZRiEdcRk2w2rJ//QmYBxhpfB9wR4+4AaW8RQL1f1S3f151WU7Y1D7tEHYbacSlqqxt1tgAd8PayVOW4KtkpyFfgfBu44/Gc3iUal73eP3dQTYxy3MXOV1IDwIG2GuA/z/T7gZnoWh8Cp8buJTWJ9CMPm3Q1OEc9wBHoRvpWZLAzqt1nWvg2BnsoGw0BKk+GBwDbBfgf9pppfxOrgqz6/GUv6IER7iiWImvMHjHpf1BKvFKBdTzDQqU8zUox0Va86X/E7xxtvwI3wvStwNi+3T/gL+gPNd4cyuEQAAAABJRU5ErkJggg==");
durch ../icons/css-vorschau.png
durch
Soweit ich weiß, funktioniert diese Kurzform nicht in Skripten.
Soweit ich weiß, funktioniert diese Kurzform nicht in Skripten.
Ähhh...
das war nur zum verdeutlichen, wo das css-vorschau.png liegt.
Irgendwie muß man doch auch in diesem Script das base64 durch ein File ersetzen können
Irgendwie muß man doch auch in diesem Script das base64 durch ein File ersetzen können
Na klar, aber du musst den vollständigen Pfad angeben, beginnend mit dem Protokoll file:///.
milupo :
Danke für den Schubs:
Das tuts:
window.__SSi == "window0" && CustomizableUI.createWidget({
id: "Reload_userChrome",
label: "Reload userChrome",
localized: false,
onCreated(btn) {
var u = Services.io.newURI;
var code = Cu.readUTF8URI(u(
u(Components.stack.filename).resolve("reload_userChrome.txt")
)).replace(
'Components.utils.import("resource://gre/modules/Services.jsm", {})',
"Cu.getGlobalForObject(Cu)"
);
var del = function() {
this.previousSibling.remove();
this.remove();
};
var currentProfileDirectory = Services.dirsvc.get("ProfD", Ci.nsIFile).path.replace(/\\/g, "/");
var buttonicon = "/chrome/icons/css-vorschau.png";
(this.onCreated = btn => {
// btn.setAttribute("image", "data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABPElEQVQ4ja3TsU6UQRQF4G8D7jaS2EqhwMaYSGHnI1BQ+ATaUtqR0BJIDGjhMxhKKgLxEQStDFYmGpTKqC8grMdiZ80w4d/KSW5xM/ece2fuOTQnDMOL8D78DL/CSdgJd0vN7XAeDmrgbHgZRiEdcRk2w2rJ//QmYBxhpfB9wR4+4AaW8RQL1f1S3f151WU7Y1D7tEHYbacSlqqxt1tgAd8PayVOW4KtkpyFfgfBu44/Gc3iUal73eP3dQTYxy3MXOV1IDwIG2GuA/z/T7gZnoWh8Cp8buJTWJ9CMPm3Q1OEc9wBHoRvpWZLAzqt1nWvg2BnsoGw0BKk+GBwDbBfgf9pppfxOrgqz6/GUv6IER7iiWImvMHjHpf1BKvFKBdTzDQqU8zUox0Va86X/E7xxtvwI3wvStwNi+3T/gL+gPNd4cyuEQAAAABJRU5ErkJggg==");
btn.setAttribute("image", "file:" + currentProfileDirectory + buttonicon);
btn.defaultContextId = "toolbar-context-menu";
var win = btn.ownerGlobal;
var wdp = new win.DOMParser();
var parser = class {
parseFromString(...args) {
var doc = wdp.parseFromSafeString(...args);
doc.documentElement.lastChild.appendChild = del;
return doc;
}
}
win.setTimeout(() => new win.Function("DOMParser", code).call(btn, parser), 50);
})(btn);
}
});
Alles anzeigen
Das tuts:
Wunderbar, jetzt weiß ich, wie ich hier ein lokales icon schreiben kann.
Das tuts:
Ja, das funktioniert.
Aber hat denn nun schon jemand Erfolg zu vermelden mit Rechtsklick für userContent.css ?
mit Rechtsklick für userContent.css ?
Hallo FuchsFan
Funktioniert hier nicht.
PS:
Ich nutze es jetzt nur für die userChrome.css, für die content habe ich etwas anderes.
Aber hat denn nun schon jemand Erfolg zu vermelden mit Rechtsklick für userContent.css ?
Funktioniert hier nicht.
Danke, Andreas, ist hier auch so. Schade!
für die content habe ich etwas anderes.
Das wäre?