Dankeschön!
Toller tipp, fundierte Reportage! Sehr gut!
Dankeschön!
Toller tipp, fundierte Reportage! Sehr gut!
Sinéad O’Connor (✝56)
Dankeschön! Auf die Idee das mit css zu lösen, wäre ich nie gekommen!
Habe ich mal für 'mein' Script angepasst. Für > 1-stellige Ordneranzahl muss ich später noch nachbessern. Habe nachgebessert für Anzahl Ordner, Anzahl Lesezeichen. Sind jetzt jeweils 2-stellig.
(function() {
if (!window.gBrowser)
return;
setTimeout(function() {
setFunction();
},50);
function setFunction() {
const css =`
.countClass::after {
content: attr(data-value);
color: lightgray;
padding-right: 3px;
}
`;
const sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
const uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css));
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
let bmbMenu = document.getElementById('bookmarks-menu-button');
let bookMenu = document.getElementById('bookmarksMenu');
let persToolBar = document.getElementById('PersonalToolbar');
if(bmbMenu)
bmbMenu.addEventListener('popupshowing', onPopupShowing );
if(bookMenu)
bookMenu.addEventListener('popupshowing', onPopupShowing );
if(persToolBar)
persToolBar.addEventListener('popupshowing', onPopupShowing );
}
function onPopupShowing(aEvent) {
let popup = aEvent.originalTarget;
for (let item of popup.children) {
if (item.localName != 'menu' || item.id?.startsWith('history'))
continue;
setTimeout(() => {
let itemPopup = item.menupopup;
itemPopup.hidden = true;
itemPopup.collapsed = true;
itemPopup.openPopup();
itemPopup.hidePopup();
let menuitemCount = 0;
let menuCount = 0;
for (let subitem of itemPopup.children) {
if (subitem.classList.contains('bookmark-item') && !subitem.disabled && !subitem.hidden) {
if (subitem.localName == 'menuitem') {
menuitemCount++;
} else if (subitem.localName == 'menu') {
menuCount++;
}
}
}
itemPopup.hidden = false;
itemPopup.collapsed = false;
let label = item.childNodes[3]; //[1]Anzeige links
label.classList.add('countClass');
let menuTrenn = '\xa0\xa0\xa0';
if (menuCount == 0) {menuTrenn = '\xa0\xa0';};
if (menuCount == 0) {menuCount ='\xa0';};
if (menuitemCount == 0) {menuitemCount ='\xa0';};
let buttonIcon = "12SWfolder-10.svg";
let IconPath = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir, 'chrome', 'css', 'image', 'lesezeichenicons_ohne'));
const css =`
.countClass::after {
background-image: url("${IconPath}/${buttonIcon}") !important;
fill: lightgray !important;
background-repeat: no-repeat !important;
background-size: 12px 12px !important;
background-position: right 22px center !important;
}
.countClass[data-value^="\xa0"]::after {
background-image: none !important;
}
`;
const sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
const uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css));
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
let strCountOut = String(menuCount).padStart(2,'') + menuTrenn + String(menuitemCount).padStart(2,'\xa0');
label.setAttribute('data-value', strCountOut);
}, 100);
}
}
})();
Alles anzeigen
Ich hätte einen Wunsch, bekomme es aber einfach nicht hin:
Könnte man hier statt einem 'emoticon' ein eigenes Icon einbauen?
Das eben nur bei diesen vorgegebenen Bedingungen erscheint?
Das funkt wohl nicht mit 'Strings'?
(function() {
if (!window.gBrowser)
return;
setTimeout(function() {
setFunction();
},50);
function setFunction() {
const css =`
.countClass::after {
content: attr(data-value);
color: lightgray;
padding-right: 3px;
}
`;
const sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
const uri = Services.io.newURI('data:text/css,' + encodeURIComponent(css));
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
let bmbMenu = document.getElementById('bookmarks-menu-button');
let bookMenu = document.getElementById('bookmarksMenu');
let persToolBar = document.getElementById('PersonalToolbar');
if(bmbMenu)
bmbMenu.addEventListener('popupshowing', onPopupShowing );
if(bookMenu)
bookMenu.addEventListener('popupshowing', onPopupShowing );
if(persToolBar)
persToolBar.addEventListener('popupshowing', onPopupShowing );
}
function onPopupShowing(aEvent) {
let popup = aEvent.originalTarget;
for (let item of popup.children) {
if (item.localName != 'menu' || item.id?.startsWith('history'))
continue;
setTimeout(() => {
let itemPopup = item.menupopup;
itemPopup.hidden = true;
itemPopup.collapsed = true;
itemPopup.openPopup();
itemPopup.hidePopup();
let menuitemCount = 0;
let menuCount = 0;
for (let subitem of itemPopup.children) {
if (subitem.classList.contains('bookmark-item') && !subitem.disabled && !subitem.hidden) {
if (subitem.localName == 'menuitem') {
menuitemCount++;
} else if (subitem.localName == 'menu') {
menuCount++;
}
}
}
itemPopup.hidden = false;
itemPopup.collapsed = false;
let label = item.childNodes[3];
label.classList.add('countClass');
let menuTrenn = ' ';
if (menuCount > 0) {menuTrenn = ' 🗁 ';}
else if(menuCount == 0) {menuTrenn = ' ';};
if (menuCount == 0) {menuCount ='\xa0';};
if (menuitemCount == 0) {menuitemCount ='\xa0';};
let strCountOut = menuCount + menuTrenn + String(menuitemCount).padStart(2,'\xa0');
label.setAttribute('data-value', strCountOut);
}, 100);
}
}
})();
Alles anzeigen
Ja, das ist der .places-tooltip
der Bookmarks. Da weiß ich dann auch nicht weiter, war als Ansatz für eine Bastelei gedacht..
Sollte so funktionieren, bei den Buttons braucht es allerdings eine kleine "Anlaufzeit":
(function () {
let css = `
tooltip[label*=" "],
#tabbrowser-tab-tooltip,
.places-tooltip {
display: none !important;
}
`;
let sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
let uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css));
sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);
})();
Alles anzeigen
Hier läuft alles gut, aber ich bastel auch nicht unqualifiziert an allen Skripten rum....
getestet auf: WIN7, WIN10, WIN11, LIN_Mint_Vera....
Dankeschön: @BrokenHeart .....
Vielleicht wird der Abstand durch die vorangestellten Ziffern verursacht? Vielleicht von einem anderen Skript?
Ist bei mir auch so, deshalb habe ich dies auskommentiert (ca. ab Zeile 140):
// var m = undoPopup.insertBefore(document.createXULElement("menuitem"), undoPopup.childNodes[0]);
// m.setAttribute("label", "Letzten geschlossenen Tab wieder öffnen (s)");
// m.setAttribute("oncommand", "undoCloseTab()");
// m.setAttribute("accesskey", "o");
// undoPopup.insertBefore(document.createXULElement(""), undoPopup.childNodes[2]);
Vergiss nicht das Thema auf "Erledigt" zu stellen, und die "hilfreichste Antwort" von madmax25 auszuwählen..
Vielleicht meldet sich noch ein Linux-User.
Unter Linux klappt der Mittelclick direkt auf das jeweilige Vorschaubild auch.