2011-07-05 21 views
6

我使用protovis庫(http://mbostock.github.com/protovis/)繪製圖形。
我上傳了我使用的情況下,有人想看看它的代碼:
http://jsfiddle.net/zobel/brEAD/爲什麼Firefox不會將所有鼠標滾輪事件傳遞給我的JavaScript應用程序?

這裏是我的問題:在Firefox中,當我使用鼠標滾輪來放大或縮小,一些鼠標輪子事件不是由我的應用程序捕獲,而是由Firefox本身捕獲。結果是我最終得到了縮放和頁面卷軸的混合。您可以通過縮小Firefox窗口來測試它,直到滾動條可見。
在Opera下不會發生此問題。爲什麼會發生,我該如何解決它?
非常感謝。

+2

請發佈最低程序的演示,演示jsfiddle.net上的問題,而不是鏈接到您的整個源代碼的zip鏈接 – Alnitak

+0

感謝Alnitak,這裏是jsfiddle.net/zobel/brEAD/ – zobel

回答

3

可能是JavaScript庫中的一個錯誤(或簡單的省略)。圖書館需要在DOMMouseScroll事件上preventDefault()

感謝事件冒泡,你可以自己做任何DOM對象,它是圖的父節點。這裏有一個簡單的例子:

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

這將無法工作在舊版本的IE瀏覽器,因爲它不支持addEventListener,但你明白了吧。我建議使用另一個通用JavaScript庫(如jQuery),並使用它來設置您的事件處理程序。

+0

謝謝,這解決了這個問題。 – zobel

相關問題