【发布时间】:2021-09-23 00:00:53
【问题描述】:
我的网页有一个 HTML 按钮,可以触发一些用户使用键盘与之交互的 javascript。第一次单击后,该按钮被隐藏并禁用。问题是,在我禁用此按钮后,键盘 eventListener 不再注册按键。单击网页上的任意位置后,键盘事件再次开始工作。此问题在 Firefox 89.0.2 上出现,但在 Chrome 91.0.4472.124 和 Microsoft Edge 91.0.864.67 上均未出现。
代码是这样设置的:
<html>
<head></head>
<body>
<input type="button" id="startButton" value="Click to do stuff" onclick="stuff()">
</body>
</html>
function stuff(){
document.getElementById("startButton").style.visibility = "hidden"; //hide button
document.getElementById("startButton").disabled = true; //firefox users have to click again after this
//do stuff
}
document.addEventListener("keydown", function(event){
//do more stuff with keyboard inputs
});
我曾尝试在不禁用按钮的情况下运行网页,但这会导致一些其他仅适用于 firefox 的错误(例如,按空格键会莫名其妙地触发按钮,因此会再次触发 stuff() 功能)。请分享为什么禁用此按钮会阻止检测到键盘事件(仅在 firefox 上)以及如何在不要求用户再次单击屏幕的情况下保持 eventListener 处于活动状态。
【问题讨论】:
-
可能与焦点有关。
标签: javascript html button addeventlistener keydown