Danke, nur komisch, ich bekomme es nicht zum "laufen".
Na ja, ist erst einmal nicht so wichtig für mich.
Habe, so glaube ich, die Fehler mit dem Skript von Jizz behoben!
Wärst Du so lieb und würdest noch einmal testen?
2002Andreas Du auch, bitte.
JavaScript
(function () {
setTimeout(async function () {
// Menüs einfügen
var pane1 = document.getElementById('AMpopup');
var item1 = document.getElementById('tools-menu');
var item2 = document.getElementById('AMreboot');
var mb = document.getElementById('main-menubar');
var toolsMenu = document.getElementById('tools-menu');
pane1.insertBefore(toolsMenu, item2);
var helpmenu = document.getElementById('helpMenu');
pane1.insertBefore(helpmenu, item2);
var separator = document.createXULElement('menuseparator');
separator.setAttribute('flex', '1');
pane1.insertBefore(separator, item2);
// Menüs, die kopiert werden sollen
const allowedMenus = ['file-menu', 'edit-menu', 'view-menu', 'history-menu', 'bookmarksMenu'];
const menuItems = [...mb.children].filter(m => m.tagName.toLowerCase() === "menu" && allowedMenus.includes(m.id));
menuItems.forEach((m, index) => {
let cl = m.cloneNode(true);
let t = cl.querySelector('.menubar-text');
if (t) cl.removeChild(t);
item1.parentNode.insertBefore(cl, item1); // Korrekte Positionierung
// Überprüfen und Hinzufügen des Pfeils
if (cl.id === 'tools-menu' || cl.id === 'helpMenu') {
let arrow = document.createXULElement('menupopup');
arrow.setAttribute('class', 'menu-arrow');
cl.appendChild(arrow);
}
});
// bind event
let source = await readSource('chrome://browser/content/browser-menubar.js');
source = source.replace(/.*let mainMenuBar/is, 'let mainMenuBar')
.replace(/},\n\s+{ once: true }.*/is, '')
.replace("main-menubar", "AMpopup")
.replace('.getElementById("historyMenuPopup")', '.querySelector("#AMpopup #historyMenuPopup")')
.replaceAll('getElementById("history-menu")', 'querySelector("#AMpopup #history-menu")')
.replace('.getElementById("menu_EditPopup")', '.querySelector("#AMpopup #menu_EditPopup")');
eval(source);
// Funktionen für Event-Listener
// == tools-menu ==
function onExtraCommand(e) {
switch (e.target.id) {
case 'menu_preferences':
openPreferences();
break;
}
}
toolsMenu.addEventListener('command', onExtraCommand);
// == helpMenu ==
function onHelpCommand(e) {
switch (e.target.id) {
case 'menu_openHelp':
openHelpLink('firefox-help');
break;
case 'menu_layout_debugger':
toOpenWindowByType('mozapp:layoutdebug', 'chrome://layoutdebug/content/layoutdebug.xhtml');
break;
case 'feedbackPage':
openFeedbackPage();
break;
case 'helpSafeMode':
safeModeRestart();
break;
case 'troubleShooting':
openTroubleshootingPage();
break;
case 'help_reportSiteIssue':
ReportSiteIssue();
break;
case 'menu_HelpPopup_reportPhishingtoolmenu':
openUILink(gSafeBrowsing.getReportURL('Phish'), e, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
break;
case 'menu_HelpPopup_reportPhishingErrortoolmenu':
ReportFalseDeceptiveSite();
break;
case 'helpSwitchDevice':
openSwitchingDevicesPage();
break;
case 'aboutName':
openAboutDialog();
break;
case 'helpPolicySupport':
openTrustedLinkIn(Services.policies.getSupportMenu().URL.href, 'tab');
break;
}
}
helpMenu.addEventListener('command', onHelpCommand);
async function readSource(url) {
return new Promise(resolve => {
let xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.onload = function () {
resolve(xhr.responseText);
};
xhr.send();
});
}
// StyleSheetService zum Hinzufügen der CSS-Regeln
let sss = Components.classes["@mozilla.org/content/style-sheet-service;1"].getService(Components.interfaces.nsIStyleSheetService);
let uri = Services.io.newURI("data:text/css;charset=utf-8," + encodeURIComponent(`
#tools-menu,
#helpMenu {
margin-left: -5px !important;
}
#tools-menu::after,
#helpMenu::after {
background: url("chrome://global/skin/icons/arrow-right.svg"); !important;
content: '' !important;
display: block !important;
width: 16px !important;
height: 16px !important;
background-repeat: no-repeat !important;
-moz-context-properties: fill, fill-opacity;
fill: currentColor;
}
#tools-menu::after {
margin-left: 119px !important;
}
#helpMenu::after {
margin-left: 124px !important;
}
/* Menüleiste ausblenden */
#main-menubar > menu {
display: none !important;
}
`), null, null);
// CSS-Regeln registrieren
sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET);
}, 300);
})();
Alles anzeigen