问题
This link would launch a jupyter notebook.
When the page is loaded,
typing h, would launch a modal ("Keyboard shortcuts")
typing f, would launch another modal "Find and Replace"
How to have a page support to typing keyboard to launch a modal?
This link gives some inspiration inside modal.
This and this give examples about a single element, although I am asking an approach to listen keypress event on whole page
question
Here is my code which is trying to listen any keypress
<!DOCTYPE html>
<html>
<head>
<script>
i = 0;
$(document).querySelector('#myDiv').addEventListener('keyup', function (e) {
$("span").text(i += 1);
})
</script>
</head>
<body>
<div class="container" id="mydiv" tabindex="0">
<p>Keypresses: <span>0</span></p>
</div>
</body>
</html>
How to make this code work?
回答1:
You are wiring the event incorrectly. With jQuery, use on() to wire the event and provide the selector for your target element in the second argument:
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
i = 0;
$(document).on('keyup', '#mydiv', function(e) {
$("span").text(i += 1);
})
</script>
</head>
<body>
<div class="container" id="mydiv" tabindex="0">
<p>Keypresses: <span>0</span></p>
</div>
</body>
Of course, remember to click inside the element before you start typing. Now, if you want to know what key was pressed, you can use e.key. That's good if you want to get the characters, but if you want to implement shortcuts, it's better to use e.keyCode:
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).on('keyup', '#mydiv', function(e) {
$("span").text(e.key + " (" + e.keyCode + ")");
})
</script>
</head>
<body>
<div class="container" id="mydiv" tabindex="0">
<p>Keypresses: <span>0</span></p>
</div>
</body>
回答2:
maybe you should try this
document.addEventListener('keyup', function (event) {
if (event.defaultPrevented) {
return;
}
var key = event.key || event.keyCode;
console.log(key); // which "key" is the key you clicked on
// Then you should test which key is clicked so you can do whatever you want like so
if(key == 'Esc'){
//Do the magic
}
});
来源:https://stackoverflow.com/questions/58022233/how-to-have-a-page-support-to-typing-keyboard-to-launch-a-modal