gpt4 book ai didi

javascript - Chrome "Can not drag"图标干扰了鼠标悬停事件,我该如何防止这种情况发生?

转载 作者:行者123 更新时间:2023-12-04 08:09:21 25 4
gpt4 key购买 nike

下面是一些使用 javascript 创建一堆 div 元素作为像素的代码。我在 mouseover 事件中添加了一个事件监听器,并检查鼠标是否被按下。如果单击鼠标,我会更改该像素的颜色。最终结果是一个简单的绘图函数。

我相信使用 HTML5 canvas 之类的东西会更有效,但我只是在研究 DOM 以及事件的工作原理。

我面临的问题是,chrome 浏览器每隔一段时间就会认为我正在尝试拖动 body 或 div,而不再触发鼠标悬停事件。这似乎是一个不寻常的问题,我想知道是否有人知道如何避免它。

var numOfPxls = 0;
var resolution = "13px"

while (numOfPxls < 1300) {
const pxl = document.createElement("div");
pxl.classList.add("pxl");
pxl.style.cssText = `
height: ${resolution};
width: ${resolution};
`;
document.querySelector("body").appendChild(pxl);
pxl.addEventListener("mouseover", function(e){
// only continue if left click
if (e.buttons != 1) return;
this.style.backgroundColor = "pink";
});
numOfPxls++;
}
body {
margin: 0;
background-color: black;
}

.pxl {
display: inline-block;
background-color: black;
}
<body>

</body>

最佳答案

万一以后有人偶然发现这个问题,我发现了这个问题。

“mousedown”事件的默认操作是启动拖动。 div 元素不能被拖动。要解决此问题,请使用事件的 preventDefault 方法。

添加到

...
pxl.addEventListener("mouseover", function(e){
// only continue if left click
if (e.buttons != 1) return;
this.style.backgroundColor = "pink";
});
...

与:

...
pxl.addEventListener("mouseover", function(e){
// only continue if left click
if (e.buttons != 1) return;
this.style.backgroundColor = "pink";
});
//new line to prevent drag default on mousedown
pxl.addEventListener("mousedown", e => e.preventDefault());
...

关于javascript - Chrome "Can not drag"图标干扰了鼠标悬停事件,我该如何防止这种情况发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66058415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com