Ich habe diesen Code:
<!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>
Es funktioniert in Chrome & Firefox. Es funktioniert jedoch nicht mit meinem Laptop Dell Xps 13 9434's Touchpad in IE & Edge. Es funktioniert jedoch mit den Touchpads anderer Notebooks. Was ist zu tun? jQuery ist kein Problem.
"was funktioniert nicht?" => Beim Scrollen wird keine Warnung angezeigt, wenn Sie zwei Finger verwenden, wie Sie zum Blättern in Browsern verwenden.
Bearbeiten
Nach einigen Nachforschungen scheint das Problem tatsächlich das von Microsoft zu sein.
In EdgeHTML issue tracker gibt es bereits seit fast einem Jahr ein offenes Problem.
Grundsätzlich heißt es, dass Wheel-Events in Edge (und älteren IE Versionen) nicht funktionieren, wenn Precision Touchpads verwendet wird.
Übrigens lösche ich nicht den Rest der Antwort, da sie immer noch relevant ist. Sie sollten stattdessen wheel
verwenden.
Sie sollten wheel
hören: _:
window.addEventListener('wheel', mouseWheelEvent);
Es hat sowohl mousewheel
als auch DOMMouseScroll
ersetzt, die inzwischen veraltet sind und von allen Browsern unterstützt sind.
Browserübergreifendes Beispiel:
window.addEventListener('wheel', mouseWheelEvent);
function mouseWheelEvent() {
console.log("Fired");
}
<h1>
Hodor!
</h1>
<h1>
Hodor!
</h1>
<h1>
Hodor!
</h1>
<h1>
Hodor!
</h1>
<h1>
Hodor!
</h1>
<h1>
Hodor!
</h1>
<h1>
Hodor!
</h1>
Und JSFiddle Demo
Einige ältere IE-Versionen unterstützen addEventListener nicht, sie unterstützen stattdessen attachEvent.
Versuchen Sie einen crossBrowser addEventListener:
if ( window.attachEvent ) {
window.attachEvent('on'+eventType, yourHandler); // in your case "scroll"
} else {
window.addEventListener ...
}
Achten Sie auf die Seitenhöhe: Wenn kein Versatz vorhanden ist, funktioniert sie nicht. Wenn sich auf Ihrer Seite kein Versatz befindet, verwenden Sie Folgendes:
document.attachEvent('onmousewheel', mouseWheelEvent); // the event is attached to document
Staring EdgeHTML 17 unterstützt Microsoft Pointer Events, um das Problem zu lösen.
Zeigerereignisse werden ab heute von allen gängigen Browsern außer Safari unterstützt: