在该片断窗口可以是一个内容窗口(制表/ iframe中/等)或XUL窗口(nsIDOMWindow)
非常基本的非常详细的,没有技巧。未经测试。
function enterHotkeyRecord() {
window.addEventListener('keydown', downed, false);
window.addEventListener('keyup', upped, false);
window.addEventListener('keypress', pressed, false);
}
function exitHotkeyRecord() {
window.removeEventListener('keydown', downed, false);
window.removeEventListener('keyup', upped, false);
window.removeEventListener('keypress', pressed, false);
}
function pressed(e) {
e.preventDefault();
e.stopPropagation();
}
function upped(e) {
e.preventDefault();
e.stopPropagation();
}
function downed(e) {
e.preventDefault();
if (e.repeat) {
// if hold down a key it fires multiple times so ignore it
return;
}
var key = String.fromCharCode(e.code);
var str = [];
if (e.keyCode == 27) {
// user hit escape so lets exit
enterHotkeyRecord();
return;
}
if (e.altKey) {
str.push('Alt');
}
if (e.shiftKey) {
str.push('Shift');
}
if (e.metaKey) {
str.push('Meta');
}
if (e.ctrlKey) {
str.push('Ctrl');
}
str.push(key);
console.log('you pressed:', str.join(' + '));
}
enterHotkeyRecord();
我启用了为我的用户进行捕获。我只是有一个用户点击“设置热键”,然后我通知他们“听,请输入combintation”,当他们键入我记得的钥匙。一点也不难,只是一个简单的addEventListener,可以防止默认和停止传播。 – Noitidart
@Noitidart你在简单的首选项或自定义屏幕上的喜好? –
简单的首选项内联选项页面?那就是我所做的:https://addons.mozilla.org/en-US/firefox/addon/workspacehopper/?src=dp-dl-othersby – Noitidart