Beiträge von BrokenHeart
-
-
2002Andreas und omar1979:
Bitte einmal in den Fehlerbehebungsmodus gehen und dann wieder normal starten. Oder den gesamten Script-Cache löschen. Der Rechtsklick auf dem Restart-Button scheint da nicht zu funktionieren...
-
-
Ich habe mal spasseshalber in deinem Script von hier noch etwas für den Lesezeichen-Menü Button ausprobiert, das ist der Button den man in die Navbar ziehen kann.
Sehr gut! Funktioniert einwandfrei...

Gleich mal hier als neue Skript-Version eingebaut: (Dank an Horstmann )
JavaScript
Alles anzeigen(function() { if (!window.gBrowser) return; setTimeout(function() { setFunction(); },50); function setFunction() { const css =` .countClass::after { content: attr(data-value); color: red; } `; 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'); bmbMenu.addEventListener('popupshowing', onPopupShowing ); bookMenu.addEventListener('popupshowing', onPopupShowing ); 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.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++; } } } let label = item.childNodes[3]; //label.menu-iconic-text label.classList.add('countClass'); let strCountOut = " (" + menuCount + "/" + menuitemCount + ")" label.setAttribute('data-value', strCountOut); }, 100); } } })(); -
Im Lesezeichen-Menü bzw. in der Lesezeichensymbolleiste werden über lange Untermenüs leider automatisch ans Ende des Untermenüs gescrollt.
Ja. Das Verhalten ist auch in dem alten Original-Skript so. Ich vermute mal, dass es durch das kurzfristige Öffnen/Schließen der Untermenüs beim Durchiterieren passiert. An der Stelle habe ich nichts geändert und ich wüsste momentan auch nicht, wie man das unterbinden könnte?!
-
Mit diesem Script sollte es jetzt auch im Lesezeichen-Menu funktionieren:
JavaScript
Alles anzeigen(function() { if (!window.gBrowser) return; setTimeout(function() { setFunction(); },50); function setFunction() { const css =` .countClass::after { content: attr(data-value); color: red; } `; 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 bookMenu = document.getElementById('bookmarksMenu'); let persToolBar = document.getElementById('PersonalToolbar'); bookMenu.addEventListener('popupshowing', onPopupShowing ); 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.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++; } } } let label = item.childNodes[1]; //label.menu-iconic-text label.classList.add('countClass'); let strCountOut = " (" + menuCount + "/" + menuitemCount + ")" label.setAttribute('data-value', strCountOut); }, 100); } } })();Für Leute, die Probleme mit der Anzeige der Werte haben oder die Anzeige rechtsbündig vor dem Pfeil haben wollen, habe ich momentan nur diese Lösung:
In obigem Skript in der Zeile 53 ein 3 eintragen, also
let label = item.childNodes[3]; //label.menu-iconic-text
Dann werden die Werte eben weiter rechts angezeigt, was mir persönlich sehr viel besser gefällt. Natürlich Geschmackssache.
Dachte schon, es wurde überlesen.
Nein, natürlich nicht
, aber ich habe eine Antwort, die dir wahrscheinlich nicht gefallen wird: -> '42'.Nein im Ernst, ich habe keinerlei Ahnung, wie das funktionieren soll.

-
-
Funktioniert, schaut genau so aus, wie im Beitrag #52.
Vielen Dank
, dann glaube ich jetzt zu wissen, woran es liegt. Anscheinend ist die Anordnung der Kindknoten des Menü-Items anders bzw. hier gibt es noch einen zusätzlichen Eintrag. Ob das auch was mit Win11 zu tun hat, kann ich mir irgendwie nicht vorstellen. Auf jeden Fall gibt es, bei den Leuten, bei denen es bisher nicht funktioniert hat, Unterschiede im Aufbau des Menü-Items. Ich muss den Knoten, hinter dem etwas eingefügt werden soll, anders auswählen...Berichtigung!
Habe den Firefox neu gestartet, nun sind die "Einträge" hinten direkt vor den Pfeilen.
So wie es wohl sein soll.
Alles klar. Ja, so sollte es aussehen. Ändert nichts an der Ursache, die es zu beheben gilt...
PS:
Auch wenn ich das Skript für mich nicht brauche.
Ich werde es ja auch nicht dauerhaft nutzen...

-
-
Scheint also alles einwandfrei dann zu sein.
Andreas, noch eine Bitte:
Du hast doch sicher auch die 102ESR. Könntest du mal das Skript aus #48 dort testen und dann das Skript aus #54? Was zeigt er dir bei beiden an an?

In dem Skript #48 zeigt er hier nichts an,
mit dem Skript aus #54 das hier:
Danke im Voraus...
-
Hallo zusammen, ach, Herrje!

Also für die Leute, bei denen es funktioniert:
Gern geschehen...

Für die Leute, bei denen es nicht läuft:
Ich hatte jetzt das gleiche Problem in der 102.13.0 ESR Version. Keine Fehlermeldung im Log, einfach nur keine Anzeige.
Ich habe es dann mal debuggt und festgestellt, dass jede einzelne Anweisung korrekt ausgeführt wird, aber bei der Zeile
label.setAttribute('data-value', strCountOut); keine Ausgabe erfolgt. Wenn ich einen anderen "Elternknoten" benutze, dann zeigt er etwas an. Es wäre gut, wenn diese Leute mal dieses geänderte Skript testen würden (nicht wundern, im Skript befinden sich massig Log-Meldungen, die Infos ausgeben; die Ausgabe im Lesezeichen-Menü erfolgt hierbei rechtsbündig, vor dem Pfeil):
JavaScript
Alles anzeigen(function() { if (!window.gBrowser) return; function setFunction() { console.log( "---------------------------Test: Position-0" ); const css =` .countClass::after { content: attr(data-value); /*content: " 978347234 "; */ color: red; } `; 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 persToolBar = document.getElementById('PersonalToolbar'); persToolBar.addEventListener('popupshowing', function onPopupShowing(aEvent) { console.log( "---------------------------Test: Position-1" ); let popup = aEvent.originalTarget; for (let item of popup.children) { console.log( "---------------------------Test: Position-2" ); if (item.localName != 'menu' || item.id?.startsWith('history')) continue; setTimeout(() => { console.log( "---------------------------Test: Position-3" ); let itemPopup = item.menupopup; 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++; } } } console.log( "---------------------------Test: (MenuCount:" + menuCount + "/(MenuItemCount:" + menuitemCount + ")" ); let label = item.childNodes[3]; //label.menu-iconic-text label.classList.add('countClass'); let strCountOut = " (" + menuCount + "/" + menuitemCount + ")" label.setAttribute('data-value', strCountOut); console.log( "---------------------------Test: Position-4" ); }, 100); } }); } setTimeout(function() { setFunction(); },50); })();Nur in Menü - Lesezeichen tut sich nichts.
Die Funktionalität besitzt das Skript von mir (noch) nicht, da ja nur die Lesezeichenleiste abgefragt wird:
persToolBar.addEventListener('popupshowing', function onPopupShowing(aEvent)
-
Bei mir funktioniert das Skript aus #34 leider auch nicht!
Und das Skript aus #14 läuft? oder geht das auch nicht?
Was mir aber aufgefallen ist, Zeile 43 die Variable position wird nirgendwo aufgerufen!
Ooops, das stimmt, danke
. Ist vom Testen übriggeblieben
...Könnte es daran liegen?
Unwahrscheinlich, weil dann in der Konsole auch etwas stehen müsste, aber es gehört natürlich wieder entfernt.
Hier noch mal das Skript, ohne die Zeile:
Code
Alles anzeigen(function() { if (!window.gBrowser) return; function setFunction() { const css =` .countClass::after { content: attr(data-value); color: red; } `; 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 persToolBar = document.getElementById('PersonalToolbar'); persToolBar.addEventListener('popupshowing', 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.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++; } } } let label = item.childNodes[1]; //label.menu-iconic-text label.classList.add('countClass'); let strCountOut = " (" + menuCount + "/" + menuitemCount + ")" label.setAttribute('data-value', strCountOut); }, 100); } }); } setTimeout(function() { setFunction(); },50); })();omar1979 :
Also starten tut er schon mal korrekt. Jetzt wäre es natürlich interessant, ob sich in der Konsole was tut, wenn du die Lesezeichen-Ordner mal öffnest, so dass die entsprechenden Events im Skript auch aktiviert werden.
-
Keine Ahnung wo ich da schauen muss. Sorry.
Nachdem Firefox gestartet wurde [STRG+SHIFT+J] drücken.
Nein habe kein Scripte entfernt und keine Ahnung ob da ein AddOn dazwischen funkt.
Das kann man eigentlich auch nur testen, in dem man alle anderen Skripte eben mal temporär entfernt z.B. umbenennt z.B. "xxxx.uc.js___" oder verschiebt. Auch ein AddOn kann man temp. deaktivieren, dann weiß man , ob es dazwischen funkt.
Falls überlesen:
Erhöhe in meinem Skript mal die Werte in Zeile 52 und Zeile 59. Zum Testen ruhig mal auf '1000'!
-
Das läuft einwandfrei...
Wie gesagt, dann weiß ich auch nicht weiter. Ich kann es eben nur auf Win10 testen. Es scheint ja kein prinzipielles Problem mit dem OS zu geben...

Hast du auch mal die 'userChromeShadow.css' ausgeschaltet, falls von dir benutzt?
Erhöhe in meinem Skript mal die Werte in Zeile 52 und Zeile 59. Zum Testen ruhig mal auf '1000'!
-
Jetzt direkt hinter dem Ordnernamen: Besser?
JavaScript
Alles anzeigen(function() { if (!window.gBrowser) return; function setFunction() { const css =` .countClass::after { content: attr(data-value); color: red; } `; 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 persToolBar = document.getElementById('PersonalToolbar'); persToolBar.addEventListener('popupshowing', 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.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++; } } } let position = document.getElementsByClassName('label.menu-iconic-text')[0]; let label = item.childNodes[1]; //label.menu-iconic-text label.classList.add('countClass'); let strCountOut = " (" + menuCount + "/" + menuitemCount + ")" label.setAttribute('data-value', strCountOut); }, 100); } }); } setTimeout(function() { setFunction(); },50); })();Steht bei euch eine Fehlermeldung in der Konsole bzgl. dieses Skripts?
Habt ihr mal alle sonstigen Skripte entfernt? Vielleicht kommt ja auch ein spezielles AddOn als Störfaktor in Frage?
Läuft bei euch dieses (Original-)Skript? Wenn ja, dann bin ich wirklich überfragt und ratlos...
JavaScript
Alles anzeigen(function() { if (!window.gBrowser) return; function setFunction() { PlacesViewBase.prototype._onPopupShowing = function PVB__onPopupShowing(aEvent) { let popup = aEvent.originalTarget; this._ensureMarkers(popup); if ("_delayedRemovals" in popup) { while (popup._delayedRemovals.length) { popup.removeChild(popup._delayedRemovals.shift()); } } if (popup._placesNode && PlacesUIUtils.getViewForNode(popup) == this) { if (!popup._placesNode.containerOpen) { popup._placesNode.containerOpen = true; } if (!popup._built) { this._rebuildPopup(popup); } this._mayAddCommandsItems(popup); } /* original function end */ for (let item of popup.children) { if (item.localName != 'menu' || item.id?.startsWith('history')) continue; setTimeout(() => { let itemPopup = item.menupopup; 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++; } } } if (!item.labelOriginal) { item.labelOriginal = item.label; } item.labelSuffix = ' (' + menuCount + '/' + menuitemCount + ')'; item.label = item.labelOriginal + item.labelSuffix; }, 100); } popup.addEventListener('popuphidden', function onPopuphidden(event) { if (event.target != this) return; popup.removeEventListener('popuphidden', onPopuphidden); for (let item of popup.children) { if (item.localName == 'menu') { if (item.labelOriginal) { item.label = item.labelOriginal; item.labelOriginal = undefined; } } } }); } } setTimeout(function() { setFunction(); },50); })(); -
Funktioniert hier ohne Probleme.

Du bist mein Held
! Eine gute Nachricht für mich, aber eine schlechte für grisu2099 , dann muss der Fehler bei dir irgendwo anders verborgen sein. Alles richtig kopiert? 
Wäre schön, wenn Du es wieder vor das ">" zaubern könntest.
Danke fürs Testen! Ich schau, was ich machen kann...
-
Auch da keine Probleme.
Danke fürs Testen.Hat nicht FuchsFan Win11? H-I-L-F-E!!!

Funzt hier mit 115, allerdings auf Linux.
Auch dir Danke fürs Testen... -
Funktioniert leider weder in Version 115 noch in der Nightly
Starte bitte einmal im Fehlerbehebungsmodus und dann wieder normal. Liegt wahrscheinlich wieder am SkriptCache.
Beide aktuelles Win11
Dass es daran liegt, kann ich mir zwar nicht vorstellen, wäre aber gut, wenn jemand anderes das auf Win11 nochmal testen würde...ich habe nur Win10.
-
Ich persönlich fände es hinter dem Ordnernamen schöner - aber wenn es nicht anders geht, müßte ich damit anfreunden.

OK. Muss ich dann später noch etwas rumschrauben, wird sicher gehen...
Jetzt habe ich mal eine erste Version zum Testen (Anzeige hinter dem Pfeil-Icon). Die CSS-Einstellungen können ab Zeile 13 vorgenommen werden und in Zeile 47 kann die textuelle Ausgabe beeinflusst werden.
Den Patch über die Prototype-Funktion in dem Original-Skript habe ich entfernt (auch aus Sicherheitsgründen) und das Löschen der Änderung beim Schließen des Popups ist jetzt auch nicht mehr nötig.
JavaScript
Alles anzeigen(function() { if (!window.gBrowser) return; function setFunction() { const css =` .countClass::after { content: attr(data-value); color: red; font-size: 14px; font-weight: 800; } `; 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 persToolBar = document.getElementById('PersonalToolbar'); persToolBar.addEventListener('popupshowing', 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.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++; } } } item.classList.add('countClass'); let strCountOut = "[" + menuCount + "/" + menuitemCount + "]" item.setAttribute('data-value', strCountOut); }, 100); } }); } setTimeout(function() { setFunction(); },50); })(); -
Wäre es sehr schlimm, wenn die Anzeige hinter dem Pfeil erscheint? Geht sicher auch direkt hinter dem Item-Label, aber dann müsste ich noch weiter herumexperimentieren...("X/Y" sind nur vorläufige Platzhalter).
Eigentlich finde ich es dort fast sinniger, da sich die Anzahl der Ordner/Items ja auf das noch zu öffnende Popup bezieht.
