如何让JavaScript鼠标激活功能仅响应左键按下操作?
解决方案:仅让鼠标左键触发激活状态
没问题,这个需求很好实现~当前你的mousedown事件会响应所有鼠标按键(左键、右键、中键),核心原因是没有对触发事件的按键类型做过滤。我们可以利用事件对象的button属性来精准筛选——鼠标左键对应的button值是0。
你只需要在事件触发时增加一个按键判断逻辑即可,下面是修改后的完整代码:
var timeoutID; function setup() { // 绑定事件时添加按键判断 document.getElementById("demo").addEventListener("mousedown", function(event) { // 仅当左键按下时执行resetTimer if (event.button === 0) { resetTimer(); } }); startTimer(); } setup(); function startTimer() { timeoutID = window.setTimeout(goInactive, 1000); } function resetTimer() { window.clearTimeout(timeoutID); goActive(); } function goInactive() { document.getElementById("demo").style.opacity = 0; document.getElementById("demo").style.transition = "1s"; } function goActive() { document.getElementById("demo").style.opacity = 1; document.getElementById("demo").style.transition = "1s"; startTimer(); }
补充个小说明:
event.button的取值对应不同按键:0 = 左键,1 = 中键(滚轮键),2 = 右键- 我们在事件回调里加了条件判断,只有当
event.button === 0时才触发激活逻辑,这样就完美实现仅响应左键的需求啦。
内容的提问来源于stack exchange,提问作者user9783192




