WDF

階層を1つ上に上がるGo Upを右クリックメニューに追加する

階層を1つ上に上がるボタンの拡張機能 "Go Up" を userChrome.js を使って右クリックメニューに追加するコードです。

(function() {

    const GoUpMenu = {
        init: function() {
            var urlbar = document.getElementById('urlbar');
        },

        menuClicked: function(e) {
            var up = this.getUp(_content.document.location.href);
            openUILink(up, e);
        },

        getUp: function(url) {
            var matches, origUrl = url;
            matches = url.match(/(^.*\/)(.*)/);
            if(!matches) {
                return null;
            }
            url = matches[1];
            if(url != origUrl && !/(index|main)\.(php3?|html?)/i.test(url)) {
                return url;
            }
            matches = url.match(/^([^\/]*?:\/\/.*\/)[^\/]+?\//);
            if(matches) {
                return matches[1];
            }
            matches = url.match(/([^:]*:\/\/)?(.*)/);
            var protocol = matches[1], domain = matches[2];
            matches = domain.match(/^[^\.]*\.(.*)/);
            if(matches) {
                return (protocol + matches[1]);
            }
            return null;
        }
    };

    window.addEventListener('load', function() {
        GoUpMenu.init;
    }, false);
    var contextmenu = document.getElementById('contentAreaContextMenu');
    var menuitem = document.createElement('menuitem');
    menuitem.setAttribute('id', 'context-goupmenu');
    menuitem.setAttribute('label', 'Go Up');
    menuitem.addEventListener('command', function(e) {
        GoUpMenu.menuClicked(e);
    }, false);
    contextmenu.insertBefore(menuitem, document.getElementById('context-stop').nextSibling);
    contextmenu.addEventListener('popupshowing',function() {
        var cm = gContextMenu;
        menuitem.hidden = (cm.isTextSelected || cm.onLink || cm.onImage || cm.onTextInput);
    }, false);

})();