与打字稿反应:onmouseup 和 onmousedown 无法识别左键单击
React with typescript: onmouseup and onmousedown not recognizing left click
我有一段简单的代码,它应该在按下鼠标时将 mousePressed 变量设置为 true,并在松开鼠标时将其重置。我发现它适用于右键单击和中键单击,但不适用于左键单击。 event.which
returns 2 和 3 分别用于中键和右键单击。我错过了什么?有没有办法用 onclick() 获得相同的行为?我正在使用与打字稿的反应。
const canvasElement = document.createElement("canvas");
canvasElement.onmousedown = (event: MouseEvent) => {
console.log(event.which);
console.log("Mouse pressed");
console.log(this.mousePressed);
this.mousePressed = true;
};
//this.onmouseDown;
canvasElement.onmouseup = (event: MouseEvent) => {
console.log(event.which);
console.log("Mouse unpressed");
console.log(this.mousePressed);
this.mousePressed = false;
};
这有效:
canvasElement.addEventListener("pointerdown", this.onmouseDown.bind(this));
canvasElement.addEventListener("pointermove", this.recordCoordinates.bind(this));
canvasElement.addEventListener("pointerup", this.onmouseUp.bind(this));
您之前提供的代码可以正常工作:https://jsfiddle.net/ktq1oda6/
打开 fiddle 上的控制台,您应该会看到正确的 which
。
您的应用程序中可能有其他内容可以吸引点击。确保你没有在任何地方打电话 e.stopPropogation
。
编辑:我看到了您的新解决方案。您的代码中可能有其他原因导致了问题,但很高兴您修复了它。
我有一段简单的代码,它应该在按下鼠标时将 mousePressed 变量设置为 true,并在松开鼠标时将其重置。我发现它适用于右键单击和中键单击,但不适用于左键单击。 event.which
returns 2 和 3 分别用于中键和右键单击。我错过了什么?有没有办法用 onclick() 获得相同的行为?我正在使用与打字稿的反应。
const canvasElement = document.createElement("canvas");
canvasElement.onmousedown = (event: MouseEvent) => {
console.log(event.which);
console.log("Mouse pressed");
console.log(this.mousePressed);
this.mousePressed = true;
};
//this.onmouseDown;
canvasElement.onmouseup = (event: MouseEvent) => {
console.log(event.which);
console.log("Mouse unpressed");
console.log(this.mousePressed);
this.mousePressed = false;
};
这有效:
canvasElement.addEventListener("pointerdown", this.onmouseDown.bind(this));
canvasElement.addEventListener("pointermove", this.recordCoordinates.bind(this));
canvasElement.addEventListener("pointerup", this.onmouseUp.bind(this));
您之前提供的代码可以正常工作:https://jsfiddle.net/ktq1oda6/
打开 fiddle 上的控制台,您应该会看到正确的 which
。
您的应用程序中可能有其他内容可以吸引点击。确保你没有在任何地方打电话 e.stopPropogation
。
编辑:我看到了您的新解决方案。您的代码中可能有其他原因导致了问题,但很高兴您修复了它。