2011-07-05 31 views
6

Tôi đang sử dụng thư viện ảnh đơn (http://mbostock.github.com/protovis/) để vẽ biểu đồ.
Tôi đã tải lên đoạn code Tôi đang sử dụng trong trường hợp ai đó muốn có một cái nhìn vào nó:
http://jsfiddle.net/zobel/brEAD/Tại sao Firefox không vượt qua tất cả các sự kiện bánh xe chuột vào ứng dụng javascript của tôi?

Đây là vấn đề của tôi: Dưới Firefox, khi tôi sử dụng bánh xe chuột để phóng to hoặc thu, một số chuột sự kiện bánh xe không được ứng dụng của tôi chụp mà do chính Firefox thực hiện. Kết quả là tôi sẽ nhận được kết hợp các hình thu phóng và cuộn trang. Bạn có thể kiểm tra điều này bằng cách thu hẹp cửa sổ Firefox cho đến khi thanh cuộn hiển thị.
Sự cố này không xảy ra trong Opera. Tại sao nó xảy ra và làm thế nào tôi có thể giải quyết nó?
Cảm ơn rất nhiều trước.

+2

hãy đăng bản demo chương trình tối thiểu thể hiện sự cố tại jsfiddle.net thay vì liên kết tới mã zip của toàn bộ nguồn của bạn – Alnitak

+0

Cảm ơn Alnitak, đây là jsfiddle http://jsfiddle.net/zobel/brEAD/ – zobel

Trả lời

3

Có thể là lỗi (hoặc bỏ sót đơn giản) trong thư viện JavaScript. Thư viện cần phải preventDefault() trên sự kiện DOMMouseScroll.

Nhờ sự kiện sôi nổi, bạn có thể tự làm điều này trên bất kỳ đối tượng DOM nào là nút cha của biểu đồ. Dưới đây là một ví dụ đơn giản:

document.body.addEventListener('DOMMouseScroll', function(e){ 
    e.preventDefault(); 
}, false); 

Điều này sẽ không hoạt động trong các phiên bản cũ của IE vì nó không hỗ trợ addEventListener, nhưng bạn nhận được điểm. Tôi khuyên bạn nên sử dụng một thư viện JavaScript có mục đích chung khác (như jQuery), và sử dụng nó để thiết lập trình xử lý sự kiện của bạn.

+0

Cảm ơn, điều này đã giải quyết được vấn đề. – zobel

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