17.) More Tools Menu (Javascript):
Code
(function() {
const XUL_NS = 'http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul';
var toolsPopup = $('menu_ToolsPopup');
var menu = $E(<menu id="moreTools-menu" label={U('Tools')} accesskey=""/>);
var popup = $E(<menupopup id="menu_MoreToolsPopup"/>);
$A(toolsPopup.childNodes).forEach(absorb);
$W('popupshowing popupshown popuphiding popuphidden').forEach(function(type) {
popup.addEventListener(type, MTM_forwardEvent, true);
});
menu.appendChild(popup);
$('main-menubar').insertBefore(menu, $('tools-menu').nextSibling);
toolsPopup.addEventListener('DOMNodeInserted', function MTM_onDOMNodeInserted(event) {
var target = event.originalTarget;
if (target.parentNode === this)
absorb(target);
}, false);
function U(text) 1 < '?'.length ? decodeURIComponent(escape(text)) : text;
function $A(arr) Array.slice(arr);
function $W(str) str.split(' ');
function $(id) document.getElementById(id);
function $E(xml, doc) {
doc = doc || document;
xml = <root xmlns={doc.documentElement.namespaceURI}>{xml}</root>;
var pp = XML.prettyPrinting;
XML.prettyPrinting = false;
var root = new DOMParser().parseFromString(xml.toXMLString(), 'application/xml').documentElement;
XML.prettyPrinting = pp;
doc.adoptNode(root);
var range = doc.createRange();
range.selectNodeContents(root);
var frag = range.extractContents();
range.detach();
return frag.childNodes.length < 2 ? frag.firstChild : frag;
}
function isMoreTools(item) {
switch (item.getAttribute('id')) {
case 'menu_search':
case 'browserToolsSeparator':
case 'menu_openDownloads':
case 'menu_openAddons':
case 'sync-setup':
case 'sync-syncnowitem':
case 'devToolsSeparator':
case 'javascriptConsole':
case 'webConsole':
case 'menu_pageInfo':
case 'sanitizeSeparator':
case 'privateBrowsingItem':
case 'sanitizeItem':
case 'prefSep':
case 'menu_preferences':
return false;
}
return true;
}
function absorb(item) {
if (!isMoreTools(item)) return;
if (item.localName === 'menuseparator') {
setTimeout(function() document.adoptNode(item), 0);
return;
}
var itemLabel = item.getAttribute('label').toLowerCase();
var nodes = $A(popup.children);
for (var index = 0, len = nodes.length; index < len; index++) {
if (itemLabel < nodes[index].getAttribute('label').toLowerCase()) break;
}
popup.insertBefore(item, nodes[index]);
}
function MTM_forwardEvent({type}) {
var _event = document.createEvent('PopupEvents');
_event.initMouseEvent(type, true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
toolsPopup.dispatchEvent(_event);
}
})();
Alles anzeigen
Zu Nr.7 (Die Uhr): Ich glaub, da kann ich eventuell wegen der Addonbar da doch wat ausrichten. Ne Idee halt. Muss aber noch 2-3 Versuche fahren.
Es gibt mtw. einen aktuellen Ersatz mit korrigiertem frischen Code für 26. StatusbarInURLBar: Chrome Statusbar
28. Revert Titlebar // Im Fuchs 4 gibt es u.a. einen Bug bei ausgeblendeter Menübar. Neben dem neuen Appmenu-Button erscheint kein aktueller Seitentitel, wie es ja in der "normalen" Titlebar der Fall ist. Dieses Script behebt diesen Bug (Siehe Bild unten).
[Blockierte Grafik: http://img7.imagebanana.com/img/5sl28uqg/thumb/Zwischenablage02.jpg]