13

tôi có mã này:mousewheel & sự kiện dommousescroll trong IE & Cạnh

<!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> 

Nó hoạt động trong Chrome & Firefox. Tuy nhiên, nó không hoạt động với máy tính xách tay của tôi dell xps 139434 touchpad trong IE & cạnh. Nhưng nó hoạt động với (một số) touchpads của máy tính xách tay khác. Phải làm gì? jQuery là không có vấn đề.

"những gì không hoạt động?" => Không có cảnh báo khi cuộn khi sử dụng 2 ngón tay như bạn sử dụng để cuộn trong trình duyệt.

+0

tùy thuộc vào loại thông tin mà bạn nhận được từ sự kiện di chuyển, bạn có thể kết hợp/thay thế nó với 'touchstart',' touchend', 'touchmove 'sự kiện. Xem [mozilla docs] (https://developer.mozilla.org/en-US/docs/Web/Events/touchstart) để biết thêm chi tiết –

Trả lời

11

Sửa

Sau khi một số nghiên cứu có vẻ như rằng vấn đề thực sự là Microsoft.

Có sự cố mở về nó trong EdgeHTML issue tracker trong gần một năm rồi.

Về cơ bản nó nói rằng sự kiện bánh xe không hoạt động trong Cạnh (Và phiên bản IE cũ hơn) khi sử dụng Precision Touchpads.

Bằng cách này tôi không xóa phần còn lại của câu trả lời vì nó vẫn còn liên quan. Tuy nhiên, bạn nên sử dụng wheel.


Bạn nên lắng nghe wheel:

window.addEventListener('wheel', mouseWheelEvent); 

Nó đã thay thế cả hai mousewheelDOMMouseScroll được phản của bây giờ và là supported by all browsers.


Chữ thập dụ trình duyệt:

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>


JSFiddle demo

+0

Hodor haha ​​nice ... nhưng xin lỗi vẫn không hoạt động trong IE (11.576.14393.0) & Edge (14.14393) trên dell xps 13 9343 – Mart

+0

@MartHaarman, bạn đã đúng :) Xem câu trả lời cập nhật –

+1

Yup. Tôi đã mở vấn đề đó từ lâu rồi. Nói với nhiều Thủ tướng Chính trực tiếp và trên truyền thông xã hội. Họ dường như không muốn sửa chữa nó.Nó bây giờ cũng ảnh hưởng đến trackpad trên màn hình mới của Windows 10 Creator's Update, vì hệ điều hành xử lý nó như một Touchpad chính xác ảo. Sự cố mới được mở tại đây: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10523255/ – BTC

0

Một số phiên bản IE cũ không hỗ trợ addEventListener, họ hỗ trợ attachEvent để thay thế.

Thử crossBrowser addEventListener: chú ý

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

Pay với chiều cao page: nó sẽ không hoạt động nếu có được không bù đắp. Nếu có được không bù đắp trong trang của bạn, sau đó sử dụng này:

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

Cảm ơn gợi ý, nhưng không hoạt động trong IE (11.576.14393.0) & Edge (14.14393) trên dell xps 13 9343 – Mart

+0

thật lạ vì tôi đã sử dụng phiên bản mà bạn đã lưu ý. Btw, tôi có hai cài đặt của IE: một là "Microsoft EdgeHTML 14.14393, Microsoft Edge 38.14393.0.0", và trong attachEvent này không hoạt động, phiên bản IE khác là: 11.576.14.393.0 và ở đây mẹo hoạt động tốt . @ Mart, hãy cho tôi biết khi nào bạn sẽ giải quyết vấn đề, tôi là curios! :) – misterwolf

Các vấn đề liên quan