13

Ich habe diesen Code:Mausrad & dommousescroll Ereignis in IE & 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> 

Es funktioniert in Chrome & Firefox. Allerdings funktioniert es nicht mit meinem Laptop Dell 139434 Touchpad in IE & Rand. Aber es funktioniert mit den Touchpads einiger anderer Laptops. Was ist zu tun? jQuery ist kein Problem.

"Was funktioniert nicht?" => Es gibt keine Warnung in scroll, wenn Sie zwei Finger verwenden, wie Sie es in Browsern verwenden.

+0

je nachdem, welche Art von Informationen, die Sie aus dem Scroll-Ereignisse empfangen, können Sie es mit 'touchstart' kombinieren/Ersetzen,' touchend', 'Berührungsbewegungs 'Ereignisse. Weitere Informationen finden Sie unter [mozilla docs] (https://developer.mozilla.org/en-US/docs/Web/Events/touchstart) –

Antwort

11

bearbeiten

Nach einigen Recherchen scheint es, dass das Problem tatsächlich von Microsoft ist.

Es gibt ein offenes Problem darüber in EdgeHTML issue tracker für fast ein Jahr bereits.

Grundsätzlich heißt es, dass Felgenereignisse nicht in Edge (und ältere IE-Versionen) funktionieren, wenn Sie verwenden.

Übrigens lösche ich den Rest der Antwort nicht, da es immer noch relevant ist. Sie sollten stattdessen wheel verwenden.


Sie zu wheel hören sollte:

window.addEventListener('wheel', mouseWheelEvent); 

Es hat sowohl mousewheel und DOMMouseScroll ersetzt, die inzwischen veraltet sind und ist supported by all browsers.


Cross-Browser-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

+0

Hodor haha ​​schön ... aber tut mir leid, funktioniert immer noch nicht im IE (11.576.14393.0) & Edge (14.14393) auf der dell xps 13 9343 – Mart

+0

@MartHaarman nun, du hattest Recht :) Siehe aktualisierte Antwort –

+1

Yup. Ich habe dieses Thema vor langer Zeit geöffnet. Gesprochen auf viele Edge PMs persönlich und über soziale Medien. Sie scheinen es nicht reparieren zu wollen.Es wirkt sich nun auch auf das neue Bildschirm-Trackpad des Windows 10 Creator's Update aus, da das Betriebssystem es wie ein virtuelles Precision Touchpad behandelt. Neue Frage hier geöffnet: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10523255/ – BTC

0

Einige ältere IE-Version nicht unterstützt addEventListener unterstützen sie attachEvent statt.

ein Cross addEventListener Versuchen:

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

Achten Sie auf die Seitenhöhe: es wird nicht funktionieren, wenn es keine versetzt ist. Wenn es keine in Ihrer Seite versetzt ist, dann verwenden:

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

Danke für den Vorschlag, aber nicht in IE (11.576.14393.0) & Edge (14.14393) auf dem Dell XPS 13 9343 – Mart

+0

ist es seltsam, weil ich die Version verwendet, die Sie mir angemerkt haben. Btw, ich habe zwei Installationen von IE: eine ist "Microsoft EdgeHTML 14.14393, Microsoft Edge 38.14393.0.0", und in diesem versino attachEvent funktioniert nicht, die andere IE-Version ist: 11.576.14.393.0 und hier funktioniert der Trick gut . @Mart, lassen Sie mich wissen, wenn Sie den Trick lösen, ich bin Kuriositäten! :) – misterwolf