javascript - 点击监听器 : how to get my mouselistener record every click on a given button

标签 javascript button mouseclick-event

我目前正在记录 html 文件上的所有鼠标点击。我有两个功能。第一个是一般监听器,记录所有鼠标点击。第二个是用于点击 html 元素(如按钮)。这两个鼠标事件的代码如下。当我单击按钮时,第二个函数会记录此事件。但是,当我随后第二次单击同一按钮时,第一个函数会记录它。在这种情况下,我在日志中看不到单击的是按钮。如何修改我的代码,以便相应的函数甚至可以记录对按钮的多次点击?

//general mouse click listener
document.addEventListener('click', showClickCoords, true);
function showMovementCoords(event) {
        trackedData.push("Date.now()    +" "+
        event.clientX.toString()+"_"+event.clientY.toString());
}

//listener for html elements
document.getElementById("clickOnMe").addEventListener("focus", function(event) {focusFunction(event);});

function focusFunction(event) {
    trackedData.push(Date.now()+" " +event.target.id );
}

最佳答案

问题是您正在使用 focus 监听器。这意味着每当您聚焦按钮时,它都会触发该监听器,因此如果您已经单击了一次,则必须聚焦其他内容,然后再次聚焦该按钮。要修复此行为,您应该只使用 click 监听器。

var trackedData = [];

document.addEventListener('click', showMovementCoords, true);

function showMovementCoords(event) {
  trackedData.push("Date.now()    +" + event.clientX.toString() + "_" + event.clientY.toString());
  console.log(trackedData);
}

document.getElementById("clickOnMe").addEventListener("click", function(event) {
  focusFunction(event);
  console.log(trackedData);
});

function focusFunction(event) {
  trackedData.push(Date.now() + " " + event.target.id);
}
<button id="clickOnMe">Click on me</button>

关于javascript - 点击监听器 : how to get my mouselistener record every click on a given button,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57958924/

相关文章:

java - 是否可以使用 getClic() 来获取 X() ?

javascript - Angular : Pass $scope variable as directive attribute

javascript - 在 yii2 中通过 ajax 显示 kartik 咆哮

javascript - 如何禁用 jsTree 上的热键(arrowKeys)?

c# - 从 RESTful WCF 服务返回图像

JavaFX、JFoenix - 按钮角是彩色的,即使是圆角的

python - Pyautogui 鼠标点击而不实际移动鼠标

c# - 捕获鼠标按钮

javascript - 如何在用户按住按钮时重复执行功能?

java - 在 FOR 循环之前调用时未调用 Settext