cinhoo
狐狸大王
狐狸大王
  • UID31676
  • 注册日期2010-01-21
  • 最后登录2019-01-08
  • 发帖数330
  • 经验15枚
  • 威望0点
  • 贡献值0点
  • 好评度6点
  • 社区居民
  • 忠实会员
15楼#
发布于:2014-05-30 17:30
自用的KeyChanger.uc.js
var KeyChanger = {
    keys : {
        // 重启浏览器
        'p+ctrl' : 'Services.appinfo.invalidateCachesOnRestart() || Application.restart();',
        // 打开Profile
        '[+ctrl' : 'Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsILocalFile).reveal();',
        // 打开Chrome
        ']+ctrl' : 'Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("UChrm", Components.interfaces.nsILocalFile).reveal();',
        // 转到页首
        'q+ctrl' : 'goDoCommand("cmd_scrollTop");',
        // 转到页尾
        'w+ctrl' : 'goDoCommand("cmd_scrollBottom");',
        // 关闭标签页
        'x+ctrl' : 'gBrowser.removeCurrentTab();',
        // 撤销关闭标签页
        'z+ctrl' : 'undoCloseTab();',
        // 刷新标签页/frame
        'r+ctrl' : 'KeyChanger.reloadFrame();',
        // 强制刷新标签页/frame
        'r+ctrl+shift' : 'KeyChanger.reloadFrame(true);',
        // 打开Error Console
        'j+shift' : 'toJavaScriptConsole();'
    },
    reloadFrame: function(skipCache) {
        let prevDoc, doc = document;
        while (doc) {
            prevDoc = doc;
            doc = doc.activeElement.contentDocument
        }
        prevDoc.location.reload(skipCache);
    },
    makeKeyset : function() {
        var keys = this.makeKeys();
        if (!keys)
            return;
 
        var keyset = document.getElementById('keychanger-keyset');
        if (keyset)
            keyset.parentNode.removeChild(keyset);
        keyset = document.createElement('keyset');
        keyset.setAttribute('id', 'keychanger-keyset');
        keyset.appendChild(keys);
 
        var df = document.createDocumentFragment();
        Array.slice(document.getElementsByTagName('keyset')).forEach(function(elem) {
            df.appendChild(elem);
        });
        var insPos = document.getElementById('mainPopupSet');
        insPos.parentNode.insertBefore(keyset, insPos);
        insPos.parentNode.insertBefore(df, insPos);
    },
    makeKeys : function(){
        if (!this.keys)
            return null;
 
        var dFrag = document.createDocumentFragment();
 
        Object.keys(this.keys).forEach(function(n) {
            let keyString = n.toUpperCase().split("+");
            let modifiers = "", key, keycode, k;
 
            for (let i = 0, l = keyString.length; i < l; i++) {
                k = keyString[i];
                switch (k) {
                    case "CTRL":
                    case "CONTROL":
                    case "ACCEL":
                        modifiers += "accel,";
                        break;
                    case "SHIFT":
                        modifiers += "shift,";
                        break;
                    case "ALT":
                    case "OPTION":
                        modifiers += "alt,";
                        break;
                    case "META":
                    case "COMMAND":
                        modifiers += "meta,";
                        break;
                    case "OS":
                    case "WIN":
                    case "WINDOWS":
                    case "HYPER":
                    case "SUPER":
                        modifiers += "os,";
                        break;
                    case "":
                        key = "+";
                        break;
                    case "BACKSPACE":
                    case "BKSP":
                    case "BS":
                        keycode = "VK_BACK";
                        break;
                    case "RET":
                    case "ENTER":
                        keycode = "VK_RETURN";
                        break;
                    case "ESC":
                        keycode = "VK_ESCAPE";
                        break;
                    case "PAGEUP":
                    case "PAGE UP":
                    case "PGUP":
                    case "PUP":
                        keycode = "VK_PAGE_UP";
                        break;
                    case "PAGEDOWN":
                    case "PAGE DOWN":
                    case "PGDN":
                    case "PDN":
                        keycode = "VK_PAGE_DOWN";
                        break;
                    case "TOP":
                        keycode = "VK_UP";
                        break;
                    case "BOTTOM":
                        keycode = "VK_DOWN";
                        break;
                    case "INS":
                        keycode = "VK_INSERT";
                        break;
                    case "DEL":
                        keycode = "VK_DELETE";
                        break;
                    default:
                        if (k.length === 1) {
                            key = k;
                        } else if (k.indexOf("VK_") === -1) {
                            keycode = "VK_" + k;
                        } else {
                            keycode = k;
                        }
                        break;
                }
            }
            let elem = document.createElement('key');
            if (modifiers !== '')
                elem.setAttribute('modifiers', modifiers.slice(0, -1));
            if (key)
                elem.setAttribute('key', key);
            else if (keycode)
                elem.setAttribute('keycode', keycode);
 
            let cmd = this.keys[n];
            switch (typeof cmd) {
            case 'function':
                elem.setAttribute('oncommand', '(' + cmd.toSource() + ').call(this, event);');
                break;
            case 'object':
                Object.keys(cmd).forEach(function(a) {
                    elem.setAttribute(a, cmd[a]);
                }, this);
                break;
            default:
                elem.setAttribute('oncommand', cmd);
            }
            dFrag.appendChild(elem);
        }, this);
        return dFrag;
    }
};
 
KeyChanger.makeKeyset();
【 在 hailongchang (novice) 的大作中提到: 】 上了Firefox这艘贼船就很难再下来了,我当年是报着试一试的心态用了下Firefox,当然包括当时一些如日中天的插件,这一用就抛弃IE了。几年过后,发现IE8也还不错,但是就是怎么都用不管,Firefox连同上面的那些插件已经彻底绑架了我的习惯,用别的浏览器觉得巨不爽,包括Chrome
上一页 下一页
游客

返回顶部