在該片斷窗口可以是一個內容窗口(製表/ 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