js中的点击函数堆叠

问题描述 投票:0回答:1

我的 js 代码需要一些帮助...

我目前正在尝试创建一些键盘快捷键,以使我的工作更快一点,我编写了这段代码,每次加载网站时都使用 violent Monkey 运行。

var reloadButton = document.getElementById("btnSearchAll");
document.addEventListener('keydown', (event) => {
    if(event.altKey && event.key == "r") {
    reloadButton.click();
  }
});

问题是,每次我使用此快捷方式时,我尝试单击的按钮的 click 功能都会堆积起来。我第一次使用它时,它会点击一次,第二次它会触发两次,依此类推。

我尝试使用 if 语句在其中添加一些逻辑,并在我放开按键时添加事件侦听器,但它似乎不起作用。

我不太擅长 javascript,所以我请求你的帮助。问题似乎是什么?

javascript event-handling
1个回答
0
投票

我们可能需要更多上下文,因为您的代码应该正常工作。也许它会以某种方式重新运行。

var reloadButton = document.getElementById("btnSearchAll");
document.addEventListener("keydown", (event) => {
  if (event.altKey && event.key === "r") {
    reloadButton.click();
  }
});
<button id="btnSearchAll" onclick="console.log('clicked');">btnSearchAll</button>

但是您可以尝试下面的代码片段,首先检查事件是否已附加:

var reloadButton = document.getElementById("btnSearchAll");
var attached = false;

if (!attached) {
  attached = true;
  document.addEventListener("keydown", (event) => {
    if (event.altKey && event.key === "r") {
      reloadButton.click();
    }
  });
}
<button id="btnSearchAll" onclick="console.log('clicked');">btnSearchAll</button>

© www.soinside.com 2019 - 2024. All rights reserved.