Die Listener werden jetzt registriert, sobald die Lesezeichen-Ordner vorhanden sind:
JavaScript
(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(items) {
for (let item of items) {
item.addEventListener('mouseenter', onMouseenter);
item.addEventListener('mouseleave', onMouseleave);
};
};
let observer = new MutationObserver(mutations => {
for (let mutation of mutations) {
let items = [];
for (let node of mutation.addedNodes) {
if (node.type == 'menu') {
items.push(node);
};
};
addListeners(items);
};
});
addListeners(document.querySelectorAll('#PlacesToolbarItems > toolbarbutton[type="menu"]'));
observer.observe(document.getElementById('PlacesToolbarItems'), {childList: true});
setTimeout(() => observer.disconnect(), 5000);
window.addEventListener('aftercustomization', () =>
setTimeout(() =>
addListeners(document.querySelectorAll('#PlacesToolbarItems > toolbarbutton[type="menu"]')),
100
)
);
})();
Alles anzeigen