鼠标滚轮& IE浏览器中的dommousescroll事件边缘

时间:2017-02-02 21:30:46

标签: 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>

适用于Chrome&amp; Firefox浏览器。但是,它并不适用于我的笔记本电脑dell xps 13 9434的触摸板在IE&amp;边缘。但它确实适用于(某些)其他笔记本电脑&#39;触摸板。该怎么办? jQuery没问题。

&#34;什么不起作用?&#34; =&GT;使用2个手指时,滚动时没有警报,就像您在浏览器中滚动一样。

3 个答案:

答案 0 :(得分:13)

修改

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

EdgeHTML issue tracker已有近一年的公开问题。

基本上它表示使用Precision Touchpads滚轮事件在Edge (以及较旧的IE版本)中不起作用。

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

你应该听wheel

window.addEventListener('wheel', mouseWheelEvent);

它已替换现在已弃用的mousewheelDOMMouseScroll,并且为supported by all browsers

跨浏览器示例:

&#13;
&#13;
window.addEventListener('wheel', mouseWheelEvent);   

function mouseWheelEvent() {
    console.log("Fired");
}
&#13;
<h1>
  Hodor!
</h1>
<h1>
  Hodor!
</h1>
<h1>
  Hodor!
</h1>
<h1>
  Hodor!
</h1>
<h1>
  Hodor!
</h1>
<h1>
  Hodor!
</h1>
<h1>
  Hodor!
</h1>
&#13;
&#13;
&#13;

JSFiddle demo

答案 1 :(得分:0)

某些较旧的IE版本不支持addEventListener,而是支持attachEvent。

尝试使用crossBrowser addEventListener:

if ( window.attachEvent ) {
 window.attachEvent('on'+eventType, yourHandler); // in your case "scroll"
} else {
 window.addEventListener ...
}

注意页面高度:如果没有偏移,它将无法工作。如果页面中没有偏移量,请使用:

document.attachEvent('onmousewheel', mouseWheelEvent); // the event is attached to document 

答案 2 :(得分:0)

凝视EdgeHTML 17,Microsoft支持Pointer Events解决该问题。

https://blogs.windows.com/msedgedev/2017/12/07/better-precision-touchpad-experience-ptp-pointer-events/

到目前为止,除Safari之外,所有主流浏览器都支持指针事件:

https://caniuse.com/#search=pointer