IE&Edge中的Mousewheel&dommousescroll事件

Mar*_*art 15 javascript internet-explorer mouseevent multi-touch microsoft-edge

我有这个代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

<script>
    window.addEventListener('DOMMouseScroll', mouseWheelEvent);
    window.addEventListener('mousewheel', mouseWheelEvent);

    function mouseWheelEvent() {
        alert(1);
    }
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

它适用于Chrome和Firefox.但是,它不能与我的笔记本电脑dell xps 13 9434的触控板在IE和边缘.但它确实与(某些)其他笔记本电脑的触摸板配合使用.该怎么办?jQuery没问题.

"什么行不通?" =>使用2个手指时,滚动时没有警报,就像您在浏览器中滚动一样.

Jaq*_*har 15

编辑

经过一些研究,似乎问题实际上是微软的问题.

EdgeHTML问题跟踪器中有一个关于它的公开问题已经有将近一年了.

基本上它说使用精确触摸板轮子事件在Edge(和旧的IE版本)中不起作用.

顺便说一句,我不删除其余的答案,因为它仍然相关.wheel无论如何你应该使用.


你应该听听wheel:

window.addEventListener('wheel', mouseWheelEvent);
Run Code Online (Sandbox Code Playgroud)

它取代了双方mousewheelDOMMouseScroll其现在取消,并通过所有浏览器都支持.


跨浏览器示例:

window.addEventListener('wheel', mouseWheelEvent);   

function mouseWheelEvent() {
    console.log("Fired");
}
Run Code Online (Sandbox Code Playgroud)
<h1>
  Hodor!
</h1>
<h1>
  Hodor!
</h1>
<h1>
  Hodor!
</h1>
<h1>
  Hodor!
</h1>
<h1>
  Hodor!
</h1>
<h1>
  Hodor!
</h1>
<h1>
  Hodor!
</h1>
Run Code Online (Sandbox Code Playgroud)


JSFiddle演示