我想將鍵盤快捷鍵分配給我的頁面上的按鈕。瀏覽器中不可見元素的鍵盤快捷鍵
事實證明,直接在標記中進行操作會導致危險的副作用:即使按鈕不可見,快捷方式也會觸發單擊事件。
我可以在我的前端控制器中動態設置/取消設置快捷方式,但看起來有點混亂。有沒有更好的方法來做到這一點?非常感謝!
我想將鍵盤快捷鍵分配給我的頁面上的按鈕。瀏覽器中不可見元素的鍵盤快捷鍵
事實證明,直接在標記中進行操作會導致危險的副作用:即使按鈕不可見,快捷方式也會觸發單擊事件。
我可以在我的前端控制器中動態設置/取消設置快捷方式,但看起來有點混亂。有沒有更好的方法來做到這一點?非常感謝!
你應該能夠做這樣的事
var shortcuts = {
49: document.getElementById("button"), //character "1"
50: document.getElementById("button2") //character "2"
};
var isVisible = function(el) {
return !(el.style.display === "none" || el.style.visibility === "hidden");
};
var bindEvent = function(el, event, handler) {
if (el.addEventListener){
el.addEventListener(event, handler, false);
} else if (el.attachEvent){
el.attachEvent('on'+event, handler);
}
};
bindEvent(window, "keydown", function(e) {
var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
if(typeof shortcuts[charCode] !== "undefined" && shortcuts[charCode] && isVisible(shortcuts[charCode])) {
shortcuts[charCode].click();
}
});
我終於實現了,如下圖所示,這不正是我想要的東西:快捷隱藏按鈕不起作用,但一個可見的人做的。
<head>
$(document).ready(function() {
var self = 'document_ready';
assignListeners();
});
var assignListeners = function() {
$('#btn1').on('click', function(){
if ($(this).css('display') != 'none')
realListener1();
});
$('#btn2').on('click', function() {
if ($(this).css('display') != 'none') {
realListener2();
}
});
};
var realListener1 = function() {
alert('Button 1 clicked')
};
var realListener2 = function() {
alert('Button 2 clicked')
};
</head>
<body style="margin:0; padding:0;">
<div>
<button id="btn1" accesskey="Z" style="display: none;">Button 1</button>
<button id="btn2" accesskey="X" >Button 2</button>
</div>
</body>
請顯示您的樣本。 –
我會堅持取消快捷方式。 –
@LeeTaylor ... 當頁面加載,按 + M激活警報窗口。 –
Alex