我有这段代码:
<!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个手指时,滚动时没有警报,就像您在浏览器中滚动一样。
答案 0 :(得分:13)
修改强>
经过一些研究后,问题实际上似乎是微软的问题。
EdgeHTML issue tracker已有近一年的公开问题。
基本上它表示使用Precision Touchpads时滚轮事件在Edge (以及较旧的IE版本)中不起作用。
顺便说一下,我不删除其余的答案,因为它仍然相关。无论如何,您应该使用wheel
。
你应该听wheel
:
window.addEventListener('wheel', mouseWheelEvent);
它已替换现在已弃用的mousewheel
和DOMMouseScroll
,并且为supported by all browsers。
跨浏览器示例:
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;
答案 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解决该问题。
到目前为止,除Safari之外,所有主流浏览器都支持指针事件: