- Firefox-Version
- 86.0
- Betriebssystem
- Win 10
Hallo,
eben festgestellt, dass das oben genannte Script von aborix in der Nightly (bei mir?) nicht mehr funktioniert. Das Überfahren der Verzeichnisse in der Lesezeichenleiste mit der Maus öffnet keine Popups mehr.
Der Grund scheint zu sein, dass die entsprechenden Listener für die mouse-Events gar nicht registriert werden, weil der Befehl
let items = document.querySelectorAll('#PlacesToolbarItems > toolbarbutton[type="menu"]'); in Zeile 41
anscheinend eine leere Node-Liste erzeugt. Ich kann aber im Inspector nicht erkennen, dass sich da irgendwelche Bezeichner oder Abhängigkeiten in der Lesezeichenleiste geändert hätten. Vielleicht habe ich auch nur was übersehen...
Vielleicht hat ja der Autor oder eine anderer schlauer Mensch eine Idee/Lösung...
Edit: Vergessen...hier das Script:
(function() {
if (!window.gBrowser)
return;
let itemToClose = null;
let timeoutEnter, timeoutLeave;
let placesContext = document.getElementById('placesContext');
placesContext.addEventListener('popuphidden', function() {
if (itemToClose) {
itemToClose.open = false;
itemToClose = null;
};
});
function onMouseenter(event) {
clearTimeout(timeoutLeave);
timeoutEnter = setTimeout(function() {
itemToClose = null;
if (placesContext._view && !placesContext._view._openedMenuButton) {
placesContext.hidePopup();
};
event.target.open = true;
}, 100);
};
function onMouseleave(event) {
clearTimeout(timeoutEnter);
timeoutLeave = setTimeout(function() {
if (placesContext.state == 'closed') {
event.target.open = false;
itemToClose = null;
} else {
itemToClose = event.target;
};
}, 100);
};
function addListeners() {
let items = document.querySelectorAll('#PlacesToolbarItems > toolbarbutton[type="menu"]');
for (let item of items) {
item.addEventListener('mouseenter', onMouseenter);
item.addEventListener('mouseleave', onMouseleave);
};
};
setTimeout(addListeners, 500);
window.addEventListener('aftercustomization', function() {
setTimeout(addListeners, 100);
});
})();
Alles anzeigen
Ok , "Fehler" gefunden.
Wenn man den Timeout in Zeile 48 von 500 auf z.B. 1500 erhöht dann läuft's wieder.