Pie*_*aud 7 javascript google-chrome
我需要mousedown
在元素上发生事件后捕获鼠标事件.
在MDN setCapture上,我没有看到任何提及setCapture()
没有在Chrome中实现,但尝试运行提供的示例产生一个Uncaugt TypeError
因为e.target.setCapture
基本上undefined
在Chrome中.
function init() {
var btn = document.getElementById("myButton");
btn.addEventListener("mousedown", mouseDown, false);
btn.addEventListener("mouseup", mouseUp, false);
}
function mouseDown(e) {
e.target.setCapture();
e.target.addEventListener("mousemove", mouseMoved, false);
}
function mouseUp(e) {
e.target.removeEventListener("mousemove", mouseMoved, false);
}
function mouseMoved(e) {
var output = document.getElementById("output");
output.innerHTML = "Position: " + e.clientX + ", " + e.clientY;
}
Run Code Online (Sandbox Code Playgroud)
Chrome中的等效API是什么?
我终于想出了一个完整的ES2015解决方案(在我的博客上解释),该解决方案捕获鼠标事件并在按下鼠标按钮时有效地禁用寄生悬停和指针光标更改.
captureMouseEvents(e)
从附加到mousedown
事件的事件处理程序调用:
const EventListenerMode = {capture: true};
function preventGlobalMouseEvents () {
document.body.style['pointer-events'] = 'none';
}
function restoreGlobalMouseEvents () {
document.body.style['pointer-events'] = 'auto';
}
function mousemoveListener (e) {
e.stopPropagation ();
// do whatever is needed while the user is moving the cursor around
}
function mouseupListener (e) {
restoreGlobalMouseEvents ();
document.removeEventListener ('mouseup', mouseupListener, EventListenerMode);
document.removeEventListener ('mousemove', mousemoveListener, EventListenerMode);
e.stopPropagation ();
}
function captureMouseEvents (e) {
preventGlobalMouseEvents ();
document.addEventListener ('mouseup', mouseupListener, EventListenerMode);
document.addEventListener ('mousemove', mousemoveListener, EventListenerMode);
e.preventDefault ();
e.stopPropagation ();
}
Run Code Online (Sandbox Code Playgroud)
请注意,该pointer-events: none
样式可防止任何组件接收鼠标事件.
归档时间: |
|
查看次数: |
2820 次 |
最近记录: |