js - 在 space 条上触发通用函数按文档上的任意位置
js - trigger generic function on space bar press anywhere on document
我有一个猜色游戏,有六个不同颜色的方块,页面顶部有一个 rgb 代码。游戏正常运行,游戏通过函数重置 - resetUI() - 当点击页面上的重置按钮时。
但是,我想在按下 space 栏时触发 resetUI 功能。我有以下代码,它不会抛出任何错误,但它也不起作用:
var body = document.querySelector("body");
body.addEventListener("keydown",function(){
if(this.key === " "){
resetUI();
}
});
我相当确定我对 "this" 的使用是错误的,但我想不出替代方案。
我已经搜索过 MDN 和 Whosebug,但我还没有看到解决这个问题的方法。谢谢
你有很多不必要的代码。并且您应该从回调函数接收 event
对象以检查按下了哪个键。
要检查空格键,您不应该对照 " "
检查,而必须检查事件的 keyCode。
document.body.onkeydown = function(e){
if(e.keyCode == 32){
console.log("space bar pressed");
resetUI();
}
}
key
属于事件(传递给事件处理程序),而不是主体(this
所指的)。
您将遇到的下一个问题是,当您向页面添加输入或文本区域时,只要用户将 space 放入输入中,它就会 运行 您的功能。您可以检查针对目标以确保在您启动函数之前输入未接收到击键..
var body = document.querySelector("body");
body.addEventListener("keydown",function(e){
var isInput = ~["TEXTAREA", "INPUT"].indexOf(e.target.tagName);
if(e.key === " " && !isInput){
// resetUI();
console.log("u clicked spacebar, and it wasn't in an input");
}
});
<input />
我有一个猜色游戏,有六个不同颜色的方块,页面顶部有一个 rgb 代码。游戏正常运行,游戏通过函数重置 - resetUI() - 当点击页面上的重置按钮时。
但是,我想在按下 space 栏时触发 resetUI 功能。我有以下代码,它不会抛出任何错误,但它也不起作用:
var body = document.querySelector("body");
body.addEventListener("keydown",function(){
if(this.key === " "){
resetUI();
}
});
我相当确定我对 "this" 的使用是错误的,但我想不出替代方案。
我已经搜索过 MDN 和 Whosebug,但我还没有看到解决这个问题的方法。谢谢
你有很多不必要的代码。并且您应该从回调函数接收 event
对象以检查按下了哪个键。
要检查空格键,您不应该对照 " "
检查,而必须检查事件的 keyCode。
document.body.onkeydown = function(e){
if(e.keyCode == 32){
console.log("space bar pressed");
resetUI();
}
}
key
属于事件(传递给事件处理程序),而不是主体(this
所指的)。
您将遇到的下一个问题是,当您向页面添加输入或文本区域时,只要用户将 space 放入输入中,它就会 运行 您的功能。您可以检查针对目标以确保在您启动函数之前输入未接收到击键..
var body = document.querySelector("body");
body.addEventListener("keydown",function(e){
var isInput = ~["TEXTAREA", "INPUT"].indexOf(e.target.tagName);
if(e.key === " " && !isInput){
// resetUI();
console.log("u clicked spacebar, and it wasn't in an input");
}
});
<input />