|
阅读:4971回复:15
有没有单键关闭当前标签页的扩展(内详)
我以前是装Super Tab Mode的,有提供这个功能,但是不知为什么重启Firefox后关闭前保留的标签页顺序会被打乱。
换了Firefox29之后,我改用 Tab Utilities ,发现其没有在当前标签页右侧新开标签页的功能,有加了个 Tab Improvement Lite 来实现这功能。现在这两个扩展之间兼容相当良好。 小插曲:曾经在某次Firefox升级后,选择标签页会自动激活菜单而基本等于被废了的 Tab History Menu ,我是没法用但是又对其功能恋恋不舍,后来搜索发现居然 Tab Utilities 内置了这个功能,嘿,埋得真够深的,现在基本圆满了。直到…… 现在发现缺少了单键关闭当前标签页的功能!! 我知道Ctrl-W、双击和中键点击标签页,但是我只想要一个键!! Tab Mix Plus 在Firefox29上装上后,居然恢复关闭的标签页功能按钮是灰的,永永远远是灰的!装上后即卸!! Super Tab Mode?我又留恋 Tab Utilities 的功能。 在AMO逛了一圈,能找到都是这些大而全的标签页扩展,没个简简单单提供单键功能的扩展吗? 呃,还有个叫 Key config 【https://addons.mozilla.org/zh-CN/firefox/addon/key-config/】的,但是下面的评论都说其功能不行…… ----------- 嗯,可能我没说清楚…… 我需要的“一键”是键盘的一键,不是鼠标,我上面已提到中键点击对我来说已经不能满足了。 现在选用了 keyconfig 来自定义。 |
|
|
|
1楼#
发布于: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(); |
|
|
|
2楼#
发布于:2014-05-29 17:47
鼠标手势是方便,但是久了右手腕会酸痛。
可以把关闭标签页、切换到上一个标签、下一个标签、聚焦到地址栏之类的常用操作都绑定到左手键盘区,大大减轻右手负担。 |
|
|
3楼#
发布于:2014-05-29 14:57
|
|
|
|
4楼#
发布于:2014-05-29 13:13
|
|
|
5楼#
发布于:2014-05-29 08:55
|
|
|
|
6楼#
发布于:2014-05-28 18:42
关闭当前标签页在页面任意处关闭赶脚鼠标方便,键盘懒得动,我一般双击鼠标右键在页面任意处关闭当前标签页尽管可以设置一键鼠标关闭。
|
|
|
7楼#
发布于:2014-05-26 23:25
|
|
|
8楼#
发布于:2014-05-26 09:32
|
|
|
|
9楼#
发布于:2014-05-24 22:46
手势划动关闭也比较方便吧
|
|
|
10楼#
发布于:2014-05-24 19:47
vimfx
|
|
|
11楼#
发布于:2014-05-23 09:37
|
|
|
|
12楼#
发布于:2014-05-22 21:56
你这个单键……右键关闭标签页可以吗?这个在Tab Utilits里面的鼠标配置中就可以配置,标签栏上右键关闭标签页
|
|
|
13楼#
发布于:2014-05-22 18:56
快捷键类扩展都行吧,keyconfig试试原版的,作者没上传到amo,以前用过记得可以的:keyconfig.xpi
还有个论坛里介绍过的:Customizable Shortcuts 还有个esc关闭当前标签的扩展,基于dorando的keyconfig开发的:EscCloseTab |
|
|
14楼#
发布于:2014-05-22 16:50
|
|
上一页
下一页