Zuerst einmal DANKE an alle für ihre Codes/Beiträge
Nachdem ich mich gestern über den Code von BrokenHeart gefreut hatte, aber aus Zeitmangel keinen umfassenden Funktionstest machen konnte, war ich heute doch etwas irritiert, daß er seinen Beitrag gelöscht hat
Eigentlich war er letztendlich der für mich der hilfreichste Beitrag.
Ich hab seinen Code mit meinem Code für Autopopup_bookmarks.uc.js verglichen und hatte dann innerhalb von 10 Minuten durch abgucken einiger seiner Änderungen ein funktionierendes Autopopup_Menus.uc.js:
JavaScript
// Autopopup_Menus.uc.js
// von @aborix, zuletzt für Bookmarks von hier:
// https://www.camp-firefox.de/forum/thema/131728
//
// 210720: von BrokenHearts gelöschtem Vorschlag für Menüs einiges abgeguckt - siehe ganz unten
(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);
};
});
// hier sind die wichtigen Änderungen von BrokenHeart
addListeners(document.querySelectorAll('#main-menubar > menu'));
observer.observe(document.getElementById('main-menubar'), {childList: true});
setTimeout(() => observer.disconnect(), 5000);
window.addEventListener('aftercustomization', () =>
setTimeout(() =>
addListeners(document.querySelectorAll('#main-menubar > menu')),
100
)
);
})();
Alles anzeigen
Man kann es nicht oft genug wiederholen: Hier werden Sie geholfen...