
Die ARD-Bundesligakonferenz im Audiostream
Bundesliga live aus den Stadien: Bei der Sportschau hören Sie jedes Einzelspiel und die ARD Bundesligakonferenz in voller Länge. Zudem finden Sie hier die…
www.sportschau.de
Heißt das, das alle onclick Beschreibungen in Scripts in addEventListener umzuschreiben sind?
Siehe z. B. hier: Zeile 480 und 495
// ==UserScript==
// @name AddonsPage.uc.js
// @description Bei about:addons (Add-ons Verwaltung) rechtsklick auf installierte Erweiterung
// @description zum Anzeigen der neu hinzugefügen Kontextmenüeinträge.
// @description Bei Detailseite (klick auf Mehr) wird die Installationsadresse - Pfad, hinzugefügt
// @author ywzhaiqi
// @include main
// @charset utf-8
// @version 2018.06.27
// @downloadURL https://raw.github.com/ywzhaiqi/userChromeJS/master/AddonsPage/AddonsPage.uc.js
// @homepageURL https://github.com/ywzhaiqi/userChromeJS/tree/master/AddonsPage
// @reviewURL http://bbs.kafan.cn/thread-1617407-1-1.html
// @optionsURL about:config?filter=view_source.editor.path
// @note - Rechtsklick bei Add-On, um das Menü anzuzeigen bei (Erweiterungen, Themes, Plug-Ins), und kopieren Sie den Namen.
// @note - Greasemonkey und Scriptish verfügen schon über dieses Menü.
// @note - Bei GM-Skript, Erweiterungen und Themen die Installationsadresse und den Plug-in-Pfad zum Kontextmenü hinzugefügt
// @note - Seite für die Skriptverwaltung wurde hinzugefügt
// @note - Rechtsklickmenü "Add-ons anzeigen" erfordert DOM Inspector, geht nur bis Firefox 56.0.2
// @note - UC-Skript-Verwaltungsschnittstelle
// @note - Aktivieren deaktivieren von Scripten erfordert rebuild_userChrome.uc.xul Script
// @note - Für Editor unter about:config bei view_source.editor.path den Pfad zum Editor eingeben
// @note - Icon Style hinzugefügt,siehe Homepage für Details
// @note - Weitere Informationen finden Sie auf der Homepage
// ==/UserScript==
location == AppConstants.BROWSER_CHROME_URL && (function() {
var iconURL = ""; // uc Symbol für Scriptliste
var Config = {
debug: 0, // 1 = Rechtsklickmenü UC Scriptverwaltung - Menüeinträge anzeigen, 0 = nicht anzeigen
detailView: 1, // Auf Details-Seite Installation-Link hinzufügen
};
if (window.AM_Helper) { // Debuggen ändern, Neuladen ohne Neustart
window.AM_Helper.uninit();
delete window.AM_Helper;
}
if (window.userChromeJSAddon) {
window.userChromeJSAddon.uninit();
delete window.userChromeJSAddon;
}
Cu.import("resource://gre/modules/AddonManager.jsm");
let isCN = false;
try {
isCN = Services.prefs.getCharPref("general.useragent.locale").indexOf("zh") != -1;
} catch (e) {
try {
isCN = Services.prefs.getCharPref("intl.locale.requested").indexOf("zh") != -1;
} catch (e) {
}
}
var ApplyPatchForScript = (function() {
const USO_URL_RE = /(^https?:\/\/userscripts.org.*\/scripts\/source\/\d+)\.\w+\.js$/i;
const GFO_URL_RE_1 = /(^https?:\/\/greasyfork.org\/scripts\/code\/\w+)\.\w+\.js$/i;
const GFO_URL_RE_2 = /(^https?:\/\/greasyfork.org\/scripts\/[^\/]+\/)code[\.\/].*\w+\.js$/i;
// (http://binux.github.io/ThunderLixianExporter/)master/ThunderLixianExporter.user.js
const GITHUB_URL_RE_1 = /(^https?:\/\/\w+.github.io\/\w+\/)master\/.*.*\w+\.js$/i;
// 从 https://raw.githubusercontent.com/ywzhaiqi/userscript/master/noNoticetitleflashOnBBS.user.js
// 转为 https://github.com/ywzhaiqi/userscript/blob/master/noNoticetitleflashOnBBS.user.js
const GITHUB_URL_RE_2 = /(^https?:\/\/raw.githubusercontent.com\/.*?\/master\/.*\.user\.js$)/i;
function getScriptHomeURL(downURL) {
var url;
if (downURL && downURL.startsWith('http')) {
if (USO_URL_RE.test(downURL)) {
url = RegExp.$1.replace(/source/, "show");
} else if (GFO_URL_RE_1.test(downURL)) {
url = RegExp.$1;
} else if (GFO_URL_RE_2.test(downURL)) {
url = RegExp.$1;
} else if (GITHUB_URL_RE_1.test(downURL)) {
url = RegExp.$1;
} else if (GITHUB_URL_RE_2.test(downURL)) {
url = RegExp.$1.replace('raw.githubusercontent.com', 'github.com')
.replace('/master/', '/blob/master/');
}
}
return url ? decodeURIComponent(url) : null;
}
function addHomePage() {
// Scriptish Scripte-Homepage hinzufügen
if (window.Scriptish_config) {
Scriptish_config.scripts.forEach(function(script) {
if(script.homepageURL) return;
var url = script.updateURL || script.downloadURL;
script.homepageURL = getScriptHomeURL(url);
});
}
// Greasemonkey Scripte-Homepage hinzufügen
AddonManager.getAddonsByTypes(['greasemonkey-user-script'], function (aAddons) {
aAddons.forEach(function (aAddon) {
if (aAddon.homepageURL) return;
var url = aAddon._script._downloadURL || aAddon._script._updateURL;
var homepageURL = getScriptHomeURL(url);
if (homepageURL) {
aAddon.homepageURL = homepageURL;
} else {
// console.log(aAddon.name, url);
}
});
});
}
return {
init: addHomePage
}
})();
setTimeout(function() {
ApplyPatchForScript.init();
}, 2000);
window.AM_Helper = {
init: function() {
document.addEventListener("DOMContentLoaded", this, false);
this.platformVersion = parseFloat(Services.appinfo.platformVersion);
},
uninit: function() {
document.removeEventListener("DOMContentLoaded", this, false);
},
handleEvent: function(event) {
switch (event.type) {
case "DOMContentLoaded":
var doc = event.target;
var win = doc.defaultView;
if (["about:addons", "chrome://mozapps/content/extensions/extensions.xhtml"].indexOf(doc.URL) == -1)
return;
this.addPopupMenu(doc);
// Menü-Aufruf
win.AM_Helper = AM_Helper;
this.win = win;
if (Config.detailView) {
var self = this;
var observer = new MutationObserver(function(e) {
e = e[e.length-1];
if (e.attributeName == "loading") {
var doc = e.target.ownerDocument;
self.setUrlOrPath(doc);
}
});
observer.observe(doc.getElementById("detail-view"), {attributes: true});
}
break;
case "popupshowing":
this.getAddon(this.win.document.popupNode.value,
this.setItemsAttributes,
event);
break;
}
},
addPopupMenu: function(doc) {
var ins = doc.getElementById("menuitem_uninstallItem");
if (!ins) return;
ins = ins.nextSibling;
var popup = ins.parentNode;
var menuitem = $C("menuseparator", {
id: "AM-separator-1"
});
popup.insertBefore(menuitem, ins);
menuitem = $C("menuitem", {
id: "AM-inspect-addon",
label: isCN ? "查看附加组件" : "Erweiterung inspizieren",
accesskey: "i",
tooltipText: isCN ? "调用 DOM Inspector 查看 addon 对象" : "Addon mit Dom Inspector inspizieren",
oncommand: "AM_Helper.getAddon(AM_Helper.getPopupNode(this).value, AM_Helper.inspectAddon);"
});
popup.insertBefore(menuitem, ins);
menuitem = $C("menuitem", {
id: "AM-edit-script",
label: isCN ? "编辑" : "Script bearbeiten",
accesskey: "b",
hidden: true,
oncommand: "AM_Helper.getAddon(AM_Helper.getPopupNode(this).value, AM_Helper.editScript);"
});
popup.insertBefore(menuitem, ins);
menuitem = $C("menuitem", {
id: "AM-reload-uc",
hidden: true,
label: isCN ? "重载 uc 脚本(慎用)" : "UC Script neuladen",
style: "font-weight:bold",
tooltiptext: "Nur teilweise Skriptunterstützung. Bei Problemen Firefox Neustarten.",
oncommand: "AM_Helper.getAddon(AM_Helper.getPopupNode(this).value, AM_Helper.reloadUserChromeJS);"
});
popup.insertBefore(menuitem, ins);
menuitem = $C("menuitem", {
id: "AM-browse-dir",
label: isCN ? "查看所在目录" : "Installations-Verzeichnis",
accesskey: "V",
oncommand: "AM_Helper.getAddon(AM_Helper.getPopupNode(this).value, AM_Helper.browseDir);"
});
popup.insertBefore(menuitem, ins);
menuitem = $C("menuitem", {
id: "AM-open-url",
label: isCN ? "打开安装页面" : "Installationsseite öffnen",
accesskey: "s",
tooltiptext: null,
oncommand: "openURL(this.tooltipText)",
});
popup.insertBefore(menuitem, ins);
menuitem = $C("menuitem", {
id: "AM-copy-name",
label: isCN ? "复制名称" : "Namen kopieren",
accesskey: "k",
oncommand: "AM_Helper.getAddon(AM_Helper.getPopupNode(this).value, AM_Helper.copyName);"
});
popup.insertBefore(menuitem, ins);
popup.addEventListener("popupshowing", this, true);
},
setItemsAttributes: function(aAddon, event) {
var popup = event.target;
var doc = popup.ownerDocument;
var
isExtension = (aAddon.type == "extension"),
isTheme = (aAddon.type == "theme"),
isPlugin = (aAddon.type == "plugin"),
isUserStyle = (aAddon.type == "userstyle"),
isScriptish = (aAddon.type == "userscript"),
isGreasemonkey = (aAddon.type == "user-script") || // Greasemonkey
(aAddon.type == "greasemonkey-user-script"), // Greasemonkey 1.7+
isUserScript = isGreasemonkey || isScriptish,
isUserChromeJS = (aAddon.type == "userchromejs"),
isService = (aAddon.type == "service"),
menuitem
;
menuitem = doc.getElementById("AM-browse-dir");
menuitem.hidden = isUserStyle || isUserScript || isService;
menuitem = doc.getElementById("AM-edit-script");
menuitem.hidden = !isUserChromeJS;
menuitem = doc.getElementById("AM-reload-uc");
menuitem.hidden = !Config.debug || !isUserChromeJS;
var className = isGreasemonkey ? "greasemonkey" : "";
// install url
menuitem = doc.getElementById("AM-open-url");
var installURL = isExtension ?
(this.getInstallURL(aAddon) || aAddon.homepageURL) :
(aAddon.homepageURL || this.getInstallURL(aAddon));
menuitem.tooltipText = installURL;
menuitem.hidden = !installURL;
menuitem.className = installURL ? className : '';
menuitem = doc.getElementById("AM-inspect-addon");
menuitem.disabled = !("inspectObject" in window);
menuitem.className = menuitem.disabled ? '' : className;
menuitem = doc.getElementById("AM-copy-name");
menuitem.tooltipText = aAddon.name;
menuitem.className = className;
// if(isUserScript && !isScriptish) {
// var usoURL = "";
// if (aAddon._script) {
// var usDownloadURL = aAddon._script._downloadURL;
// var usUpdateURL = aAddon._script._updateURL;
// if (USO_URL_RE.test(usDownloadURL)) {
// usoURL = usDownloadURL;
// } else if (USO_URL_RE.test(usUpdateURL)) {
// usoURL = usUpdateURL;
// }
// }
// menuitem = doc.getElementById("AM-go-uso");
// menuitem.disabled = !USO_URL_RE.test(usoURL);
// menuitem.className = isUserScript ? menuitem.disabled ? "" : "greasemonkey" : "";
// menuitem.tooltipText = usoURL.replace(/source/, "show")
// .replace(/.\w+.js$/, "");
// menuitem = doc.getElementById("AM-find-uso");
// menuitem.disabled = USO_URL_RE.test(usoURL);
// menuitem.className = isUserScript ? menuitem.disabled ? "" : "greasemonkey" : "";
// menuitem.setAttribute("find-on-uso",
// "https://www.google.com.hk/search?q=site:userscripts.org+inurl:scripts+inurl:show+" +
// encodeURIComponent(aAddon.name));
// }
},
getPopupNode: function (aNode) {
var doc = aNode.ownerDocument;
return "triggerNode" in aNode.parentNode ? aNode.parentNode.triggerNode : doc.popupNode;
},
getAddon: function (aId, aCallback, aEvent) {
var self = this;
if (this.win.gDetailView._addon) {
aCallback.apply(this, [this.win.gDetailView._addon, aEvent]);
return;
}
(self.platformVersion < 61.0?
new Promise((resolve, reject) => AddonManager.getAllAddons(addons => resolve(addons))):
AddonManager.getAllAddons()
).then(addons => {
for (var i = 0; i < addons.length; i++) {
if (addons[i].id == aId) {
aCallback.apply(self, [addons[i], aEvent]);
return;
}
}
});
},
inspectAddon: function (aAddon) {
inspectObject(aAddon);
},
inspectUserscript: function (aAddon) {
inspectObject(aAddon._script);
},
browseDir: function (aAddon) {
switch (aAddon.type) {
case "plugin":
var pathes = aAddon.pluginFullpath;
for (var i = 0; i < pathes.length; i++) {
this.revealPath(pathes[i]);
}
return;
case "userchromejs":
var file = aAddon._script.file;
if (file.exists())
file.reveal();
return;
}
// addon
var gecko = parseInt(Services.appinfo.platformVersion);
var nsLocalFile = Components.Constructor("@mozilla.org/file/local;1", (gecko >= 14) ? "nsIFile" : "nsILocalFile",
"initWithPath");
var dir = Services.dirsvc.get("ProfD", Ci.nsIFile);
dir.append("extensions");
dir.append(aAddon.id);
var fileOrDir = dir.path + (dir.exists() ? "" : ".xpi");
//Application.console.log(fileOrDir);
try {
(new nsLocalFile(fileOrDir)).reveal();
} catch (ex) {
var addonDir = /.xpi$/.test(fileOrDir) ? dir.parent : dir;
try {
if (addonDir.exists()) {
addonDir.launch();
}
} catch (ex) {
var uri = Services.io.newFileURI(addonDir);
var protSvc = Cc["@mozilla.org/uriloader/external-protocol-service;1"].
getService(Ci.nsIExternalProtocolService);
protSvc.loadUrl(uri);
}
}
},
editScript: function(aAddon) {
if (aAddon.type == "userchromejs") {
var path = aAddon._script.file.path;
this.launchEditor(path);
}
},
reloadUserChromeJS: function (aAddon) {
if (aAddon.type != "userchromejs") return;
var result = confirm("Neu laden, sicher?\n Mit Vorsicht verwenden, es wird nur von einigen Skripten unterstützt.\n Nicht unterstützte Skripte können Probleme beim Hinzufügen von Schaltflächen,\n Menüs oder Ereignissen haben.\n Bei Problemen, Firefox neu starten.");
if (!result) return;
var script = aAddon._script;
Services.obs.notifyObservers(null, "startupcache-invalidate", "");
Services.scriptloader.loadSubScript(script.url, {}, script.charset || "utf-8");
},
launchEditor: function(path){
var editor = Services.prefs.getCharPref("view_source.editor.path");
if (!editor) {
toOpenWindowByType('pref:pref', 'about:config?filter=view_source.editor.path');
return;
}
var UI = Cc['@mozilla.org/intl/scriptableunicodeconverter'].createInstance(Ci.nsIScriptableUnicodeConverter);
var platform = window.navigator.platform.toLowerCase();
UI.charset = platform.indexOf('win') > -1 ? 'GB2312' : 'UTF-8';
path = UI.ConvertFromUnicode(path);
var appfile = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
appfile.initWithPath(editor);
var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
process.init(appfile);
process.run(false, [path], 1, {});
},
copyName: function (aAddon) {
this.copyToClipboard(aAddon.name);
},
getInstallURL: function(aAddon) {
aAddon = aAddon || this.win.gViewController.viewObjects.detail._addon;
if (!aAddon) return null;
var url = null;
switch (aAddon.type) {
case "extension":
case "theme":
url = (aAddon.contributionURL || aAddon.reviewURL) || null;
return url && url.replace(/\/developers|\/reviews/g, "") || aAddon.creator.url;
case "greasemonkey-user-script":
return aAddon._script._downloadURL || aAddon._script._updateURL;
case "userscript":
url = aAddon._downloadURL || aAddon._updateURL;
return url;
case "userchromejs":
return aAddon.homepageURL || aAddon.reviewURL || aAddon.downloadURL || aAddon.updateURL;
default:
return aAddon.homepageURL;
}
},
get getPath() {
var url = this.win.gViewController.viewObjects.detail._addon;
if (!url) return false;
return url.pluginFullpath || false;
},
setUrlOrPath :function(doc) {
var installURL = this.getInstallURL();
if (!installURL && !this.getPath) return;
if (!doc.getElementById("detail-InstallURL-row")) {
var value = "", label = "";
if (this.win.gViewController.currentViewId.indexOf("detail") != -1) {
var aAddon = this.win.gViewController.viewObjects.detail._addon;
switch (aAddon.type) {
case "extension":
case "theme":
case "greasemonkey-user-script":
value = installURL;
label = isCN? "安装页面": "Installationseite";
break;
case "plugin":
value = this.getPath;
label = isCN? "路径": "Pfad";
break;
}
}
if (!!value && !!label) {
const row = $C("row", {
id: "detail-InstallURL-row",
class: "detail-row-complex",
label: label,
});
row.appendChild($C("label", {
class: "detail-row-label",
value: label,
}));
if (typeof(value) != "string") {
const vbox = row.appendChild($C("vbox"));
for (var i=0;i< value.length;i++) {
vbox.appendChild($C("label", {
class: "detail-row-value text-link",
crop: "end",
value: value[i],
href: value[i],
onclick: `
if(event.button == 0) {
AM_Helper.revealPath(this.value);
} else if (event.button == 2){
AM_Helper.copyToClipboard(this.value);
}
return false;`,
}));
}
} else {
row.appendChild($C("label", {
class: "detail-row-value text-link",
crop: "end",
value: value,
href: value,
onclick: `
if(event.button == 2){
AM_Helper.copyToClipboard(this.value);
return false;
}`,
}));
}
doc.getElementById("detail-rows").appendChild(row);
}
}
},
revealPath: function(path) {
var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
file.initWithPath(path);
if (file.exists())
file.reveal();
},
copyToClipboard: function (aString) {
Cc["@mozilla.org/widget/clipboardhelper;1"].
getService(Ci.nsIClipboardHelper).copyString(aString);
}
};
window.userChromeJSAddon = {
scripts: [],
unloads: [],
init: function() {
if ('userchromejs' in AddonManager.addonTypes) return;
this.initScripts();
this.registerProvider();
this.addStyle();
},
uninit: function() {
this.unloads.forEach(function(func) { func(); });
},
initScripts: function() {
var scripts = window.userChrome_js.scripts.concat(window.userChrome_js.overlays);
var self = this;
scripts.forEach(function(script, i) {
self.scripts[i] = new ScriptAddon(script);
});
},
getScriptById: function(aId) {
for (var i = 0; i < this.scripts.length; i++) {
if (this.scripts[i].id == aId)
return this.scripts[i];
}
return null;
},
registerProvider: function() {
var types = null;
if (AddonManagerPrivate.AddonType) {
types = [new AddonManagerPrivate.AddonType(
"userchromejs",
"",
isCN ? "uc 脚本" : "userChrome JS",
AddonManager.VIEW_TYPE_LIST,
9000)];
}
const provider = {
getAddonByID: function(aId, aCallback) {
let script = userChromeJSAddon.getScriptById(aId);
if (aCallback)
aCallback(script);
else
return Promise.resolve(script); // Fx61.0-
},
getAddonsByTypes: function(aTypes, aCallback) {
if (aTypes && aTypes.indexOf("userchromejs") < 0) {
if (aCallback)
aCallback([]);
else
return Promise.resolve([]);
} else {
if (aCallback)
aCallback(userChromeJSAddon.scripts);
else
return Promise.resolve(userChromeJSAddon.scripts);
}
}
};
AddonManagerPrivate.registerProvider(provider, types);
this.unloads.push(function() {
AddonManagerPrivate.unregisterProvider(provider);
});
},
addStyle: function() {
let data = '@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);\
\
@-moz-document url("about:addons"), url("chrome://mozapps/content/extensions/extensions.xhtml") {\
#category-userchromejs > .category-icon {\
list-style-image: url(data:image/png;base64,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);\
}\
}';
let styleService = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
let styleURI = Services.io.newURI("data:text/css," + encodeURIComponent(data), null, null);
styleService.loadAndRegisterSheet(styleURI, Ci.nsIStyleSheetService.USER_SHEET);
this.unloads.push(function() {
styleService.unregisterSheet(styleURI, Ci.nsIStyleSheetService.USER_SHEET);
});
},
};
function ScriptAddon(aScript) {
this._script = aScript;
this.id = this._script.url;
this.name = this._script.filename;
this.description = this._script.description;
this.enabled = !userChrome_js.scriptDisable[this.name];
// Änderung - Anpassung für userChrome.js
this.version = this._script.version || null;
this.author = this._script.author || null;
this.homepageURL = this._script.homepageURL || null;
this.reviewURL = this._script.reviewURL || null;
this.reviewCount = 0;
this.fullDescription = this._script.fullDescription || null;
this.downloadURL = this._script.downloadURL || null;
this.iconURL = iconURL;
}
ScriptAddon.prototype = {
version: null,
type: "userchromejs",
isCompatible: true,
blocklistState: 0,
appDisabled: false,
scope: AddonManager.SCOPE_PROFILE,
name: null,
creator: null,
pendingOperations: AddonManager.PENDING_NONE, // Muss neu gestartet werden, sonst werden alle angezeigt
operationsRequiringRestart: 6,
// operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_DISABLE,
get optionsURL() {
if (this.isActive && this._script.optionsURL)
return this._script.optionsURL;
},
get isActive() {
return !this.userDisabled? true: false;
},
get userDisabled() {
return !this.enabled? true: false;
},
set userDisabled(val) {
if (val == this.userDisabled) {
return val;
}
AddonManagerPrivate.callAddonListeners(val ? 'onEnabling' : 'onDisabling', this, false);
if (this.pendingOperations == AddonManager.PENDING_NONE) {
this.pendingOperations = val ? AddonManager.PENDING_DISABLE : AddonManager.PENDING_ENABLE;
} else {
this.pendingOperations = AddonManager.PENDING_NONE;
}
this.enabled = !val;
if (window.userChromejs) {
userChromejs.chgScriptStat(this.name);
}
AddonManagerPrivate.callAddonListeners(val ? 'onEnabled' : 'onDisabled', this);
},
get permissions() {
// var perms = AddonManager.PERM_CAN_UNINSTALL;
// perms |= this.userDisabled ? AddonManager.PERM_CAN_ENABLE : AddonManager.PERM_CAN_DISABLE;
var perms = this.userDisabled ? AddonManager.PERM_CAN_ENABLE : AddonManager.PERM_CAN_DISABLE;
// if (this.updateURL) perms |= AddonManager.PERM_CAN_UPGRADE;
return perms;
},
uninstall: function() {
AddonManagerPrivate.callAddonListeners("onUninstalling", this, false);
this.needsUninstall = true;
this.pendingOperations |= AddonManager.PENDING_UNINSTALL;
AddonManagerPrivate.callAddonListeners("onUninstalled", this);
},
cancelUninstall: function() {
this.needsUninstall = false;
this.pendingOperations ^= AddonManager.PENDING_UNINSTALL;
AddonManagerPrivate.callAddonListeners("onOperationCancelled", this);
},
// Fx62.0-
enable: function() {
this.userDisabled = false;
},
disable: function() {
this.userDisabled = true;
}
};
AM_Helper.init();
userChromeJSAddon.init();
function $C(name, attr) {
var el = document.createXULElement(name);
if (attr) Object.keys(attr).forEach(function(n){ el.setAttribute(n, attr[n])});
return el;
}
})();
Alles anzeigen
Bei Benutzerskripten reicht der normale Neustart von Firefox nicht. Beim Neustart muss zusätzlich der Skript-Cache geleert werden. Wenn du kein Neustart-Skript hast, mit dem man das mit Rechtsklick auf das entsprechende Symbol machen kann...
Hier mal ein Restart-Script, das das Geschilderte beherrscht:
// Restart button script for Firefox 60+ by Aris
//
// left-click on restart button: normal restart
// middle-click on restart button: restart + clear caches
// right-click on restart button: restart + clear caches
//
// based on 'Quit' button code by 2002Andreas
// restart code from Classic Theme Restorer add-on
// invalidate caches from Session Saver add-on
(function() {
try {
// ChromeUtils.importESModule("resource:///modules/CustomizableUI.sys.mjs");
var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
var appversion = parseInt(Services.appinfo.version);
var button_label = "Restart";
CustomizableUI.createWidget({
id: "uc-restart", // button id
defaultArea: CustomizableUI.AREA_NAVBAR,
removable: true,
label: button_label, // button title
tooltiptext: button_label, // tooltip title
onClick: function(event) {
var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"].createInstance(Components.interfaces.nsISupportsPRBool);
var observerSvc = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
if(event.button=='1') { // middle-click - clear caches
Components.classes["@mozilla.org/xre/app-info;1"].getService(Components.interfaces.nsIXULRuntime).invalidateCachesOnRestart();
}
if(event.button=='0' || event.button=='2') { // left-click - restart/right-click - clear caches
observerSvc.notifyObservers(cancelQuit, "quit-application-requested", "restart");
if(cancelQuit.data) return false;
Services.startup.quit(Services.startup.eRestart | Services.startup.eAttemptQuit);
}
},
onCreated: function(button) {
return button;
}
});
var icon = "chrome://global/skin/icons/reload.svg";
if(appversion < 92) icon = "chrome://browser/skin/reload.svg";
// style button icon
var uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent('\
\
#uc-restart .toolbarbutton-icon {\
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"); \
\
}\
\
'), null, null);
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
} catch (e) {
Components.utils.reportError(e);
};
})();
Alles anzeigen
Im Artikel doppelt:
Mozilla hat Version 2.24 seiner VPN-Clients für das Mozilla VPN veröffentlicht. Dieser Artikel beschreibt die Neuerungen vom Mozilla VPN 2.24.
Nachklapp:
Nach dem eben durchgeführten UpDate musste ich Zeile 33 aus #34 wiederum anpassen:
Laut Sören Hentzschel wird an der Sidebar ja vehement gebastelt. Ggf. wird da auch weitere Anpassung nötig sein. Bei mir spielen da natürlich auch die sonstigen kosmetischen Anpassungen hinein. Es bleibt spannend.
Für mich passt es jetzt wieder mit einigen Anpassungen,
vielen Dank, mal wieder
:
/* Sidebar via Hover hervorrufen und andere Sidebar-Einstellungen */
@-moz-document url("chrome://browser/content/places/bookmarksSidebar.xhtml"),
url("chrome://browser/content/browser.xhtml") {
#sidebar-main > sidebar-main {
display: none !important;
}
#bookmarks-view-children {
margin-top: -100px !important;
margin-left: -15px !important;
}
#sidebar-header {
display: none !important;
}
#sidebar-splitter {
display: none;
}
#sidebar {
border: none !important;
position: absolute !important;
width: 300px !important;
}
#sidebar-box {
display: flex !important;
position: absolute !important;
top: 107px;
bottom: 48px;
width: 260px !important;
z-index: 100 !important;
opacity: 0 !important;
margin-left: -220px !important;
transition: margin-left .5s linear .4s, opacity .6s ease-in .2s !important;
}
#sidebar-box:hover {
z-index: 100 !important;
opacity: 1 !important;
margin-left: 0 !important;
transition: margin-left .66s !important;
}
/* Beschriftungsende anpassen */
treechildren::-moz-tree-cell,
treechildren::-moz-tree-cell-text {
margin-inline-end: -8px !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: #c1e7bb !important;
opacity: 1 !important;
}
/* Lesezeichen-Sidebar Suchfeld und auch Haupt-Suchfeld ohne Eintrag */
::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;
}
/* Ordner aus der Sidebar ausblenden */
.sidebar-placesTreechildren[view="bookmarks-view"] {
margin-top: -10px!important; }
/* Fokusring um Ordner entfernen */
treechildren {
--default-focusring: 0px !important;
}
}
Alles anzeigen
Jo, seit heute funktioniert der Code im Nightly nicht mehr bzw. wenn der aktiv ist, kann man die Lesezeichensidebar nicht einblenden.
https://hg.mozilla.org/mozilla-central/rev/a38259f7bf5cadf2ce8859b499ea6278501aeded
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0 ID:20240928085335
/* Sidebar via Hover hervorrufen und andere Sidebar-Einstellungen */
@-moz-document url("chrome://browser/content/places/bookmarksSidebar.xhtml"),
url("chrome://browser/content/browser.xhtml") {
/*Sidebar per hover*/
#menu_bookmarksSidebar {
display: flex !important;
}
#bookmarks-view-children {
margin-top: -100px !important;
margin-left: -5px !important;
}
#sidebar-header {
display: none !important;
}
#sidebar-box {
margin-left: -4px !important;
position: relative;
min-width: 3px !important;
max-width: 3px !important;
z-index: 1;
}
#sidebar-splitter {
display: none;
}
#sidebar-header {
overflow: hidden;
padding: 0 !important;
}
#sidebar-header,
#sidebar {
background-color: inherit !important;
border-right: 5px solid transparent !important;
transition: min-width 300ms linear .2s !important;
min-width: 3px !important;
}
#sidebar-box:hover > #sidebar-header,
#sidebar-box:hover > #sidebar {
min-width: 300px !important;
transition-delay: 100ms !important;
}
/* Beschriftungsende anpassen */
treechildren::-moz-tree-cell,
treechildren::-moz-tree-cell-text {
margin-inline-end: -8px !important;
}
/* Lesezeichensidebar Icon-Abstand zur linken Seite */
.sidebar-placesTreechildren[view="bookmarks-view"] {
margin-left: -4px !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: #c1e7bb !important;
opacity: 1 !important;
}
/* Lesezeichen-Sidebar Suchfeld und auch Haupt-Suchfeld ohne Eintrag */
::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;
}
/* Ordner aus der Sidebar ausblenden */
.sidebar-placesTreechildren[view="bookmarks-view"] {
margin-top: -10px!important; }
/* Fokusring um Ordner entfernen */
treechildren {
--default-focusring: 0px !important;
}
}
Alles anzeigen
Was müsste wohl geändert werden?
Prima, hab ich mal adaptiert und geteilt....
.. man kann aber händisch diese in einen Ordner verschieben und via Sync übersichtlich und einheitlich halten..
So halte ich es mit den am Handy hinzugefügten Lesezeichen. Die werden am Desktop in die vorhandene Ordnerstruktur sortiert.
Danke fürs Testen, dann gehe ich mal auf die Suche..
Edit: Einmal Neustart mit Cache leeren und dann gings wieder...
Danke, Erledigt... hätte ich ja auch mal gleich versuchen können..
Moin, im Nightly leert sich die Suchleiste nicht mehr nach Abschicken des Suchbegriffs. Kann man das wieder hinkriegen?
/* Suchfeld leeren nach 4 Sekunden */
/* Author @aborix */
setTimeout(function() {
if (!window.BrowserSearch)
return;
var searchbar = BrowserSearch.searchBar;
if (!searchbar)
return;
var textbox = searchbar.textbox;
var tId;
textbox.addEventListener('input', function() {
clearTimeout(tId);
tId = setTimeout(function() {
textbox.value = '';
document.getElementById('PopupSearchAutoComplete').hidePopup();
}, 4000);
});
}, 0);
Alles anzeigen
Remember Frankie Beverly...
Frankie Beverly, Mitgründer der Soulband Maze, ist im Alter von 77 Jahren gestorben. R.I.P.