- Firefox-Version
- 115.0.2
- Betriebssystem
- Win 10
Hallo
Ich habe hier zwei Skripte die sich in einer Kleinigkeit unterscheiden, die leider ab und zu zu Verwirrung führt.
Skript 1:
JavaScript
		
					
				(function() {
    if (!window.gBrowser)
        return;
    
    setTimeout(function() {
        setFunction();
    },50);
    function setFunction() {
        const css =`
            .countClass::after {
                content: attr(data-value); 
                color: white;
            }
        `;
        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.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);
        }
    }
    
})();Skript 2:
JavaScript
		
					
				(function() {
  if (!window.gBrowser)
    return;
  function setFunction() {
    PlacesViewBase.prototype._mayAddCommandsItems =
    function PVB__mayAddCommandsItems(aPopup) {
      let hasMultipleURIs = false;
      let menuitemCount = 0;
      let menuCount = 0;
      if (aPopup._placesNode.childCount > 0) {
        for (let item of aPopup.children) {
          if (item._placesNode) {
            if (item.localName == 'menuitem') {
              menuitemCount++;
            } else if (item.localName == 'menu') {
              menuCount++;
            }
          }
        }
        if (menuitemCount > 0 || menuCount > 0) {
          hasMultipleURIs = true;
        }
      }
      if (!hasMultipleURIs)  {
        aPopup.setAttribute("nofooterpopup", "true");
        if (aPopup._endOptOpenAllInTabs) {
          aPopup.removeChild(aPopup._endOptOpenAllInTabs);
          aPopup._endOptOpenAllInTabs = null;
          aPopup.removeChild(aPopup._endOptSeparator);
          aPopup._endOptSeparator = null;
        }
        return;
      }
      aPopup.removeAttribute("nofooterpopup");
      if (!aPopup._endOptOpenAllInTabs) {
        aPopup._endOptSeparator = document.createXULElement("menuseparator");
        aPopup._endOptSeparator.className = "bookmarks-actions-menuseparator";
        aPopup.insertBefore(aPopup._endOptSeparator, aPopup.firstChild);
        aPopup._endOptOpenAllInTabs = document.createXULElement("menuitem");
        aPopup._endOptOpenAllInTabs.className = "openintabs-menuitem";
        if (this.options?.extraClasses?.entry) {
          aPopup._endOptOpenAllInTabs.classList.add(
            this.options.extraClasses.entry
          );
        }
        aPopup._endOptOpenAllInTabs.setAttribute(
          "oncommand",
          "PlacesUIUtils.openMultipleLinksInTabs(this.parentNode._placesNode, event, " +
            "PlacesUIUtils.getViewForNode(this));"
        );
        aPopup._endOptOpenAllInTabs.setAttribute(
          "onclick",
          "checkForMiddleClick(this, event); event.stopPropagation();"
        );
        aPopup.insertBefore(aPopup._endOptOpenAllInTabs, aPopup.firstChild);
      }
      let label = menuitemCount + " Link";
        if (menuitemCount != 1) {
          label += "s";
        }
        label += " / " + menuCount + " Ordner"
        if (menuitemCount == 1) {
          label += " -> Link in Tab öffnen."
        } else if (menuitemCount > 1) {
          label += " -> Links in Tabs öffnen."
        }
      aPopup._endOptOpenAllInTabs.setAttribute("label", label);
    }
  }
  setTimeout(function() {
      setFunction();
  },50);
  
})();Das Problem: Skript 1 zeigt die Reihenfolge so an: erst Ordner dann Links. Skript 2 umgekehrt: erst Links dann Ordner.
Lässt sich die Anzeige in einem der Skripte ändern, sodass beide die Infos in gleicher Reihenfolge anzeigen anzeigen? Idealerweise: erst Ordner dann Links
 
		
		
	


