【发布时间】:2019-08-20 02:47:36
【问题描述】:
我在 flexbox 中有一堆方形 div。当我在正方形内按下鼠标按钮时,我希望目标正方形的背景发生变化。我想捕获鼠标,所以当我将鼠标移到捕获的方块外并释放鼠标按钮时,背景应该会变回原来的颜色。
这有点难以描述,所以这里是代码。 https://codepen.io/tqphan/pen/qBWaVod
window.addEventListener('mousedown', function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
target.classList.add("pressed")
target.setPointerCapture(e.pointerId);
}, true);
window.addEventListener('mouseup', function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
target.classList.remove("pressed")
target.releasePointerCapture(e.pointerId);
}, true);
要重现问题,请按以下步骤操作:
- 在正方形上按鼠标左键。
- 在按住鼠标左键的同时,将鼠标拖到方块外。
- 松开鼠标左键。
在 Firefox 中,它按我的预期工作。在 Chrome 中,背景不会变回原来的颜色。
我尝试捕获窗口和文档的事件。
编辑: Chrome 中似乎没有执行指针捕获和释放。
pen.js:6 Uncaught DOMException: Failed to execute 'setPointerCapture' on 'Element': No active pointer with the given id is found.
pen.js:12 Uncaught DOMException: Failed to execute 'releasePointerCapture' on 'Element': No active pointer with the given id is found.
【问题讨论】:
标签: javascript google-chrome firefox