为什么Firefox没有将所有鼠标滚轮事件传递给我的javascript应用程序?

zob*_*bel 6 javascript firefox scroll mousewheel protovis

我正在使用protovis库(http://mbostock.github.com/protovis/)绘制图形.
我上传了我正在使用的代码,以防有人想看看它:http:
//jsfiddle.net/zobel/brEAD/

这是我的问题:在Firefox下,当我使用鼠标滚轮放大或缩小时,我的应用程序不会捕获一些鼠标滚轮事件,而是由Firefox本身捕获.结果是我最终得到了缩放和页面滚动的混合.您可以通过缩小Firefox窗口来测试这一点,直到滚动条变为可见.
在Opera下不会发生此问题.为什么会这样,我该如何解决?
非常感谢提前.

jim*_*mbo 3

可能是 JavaScript 库中的错误(或简单的遗漏)。图书馆需要preventDefault()参与该DOMMouseScroll活动。

由于事件冒泡,您可以自己在作为图的父节点的任何 DOM 对象上执行此操作。这是一个简单的例子:

document.body.addEventListener('DOMMouseScroll', function(e){
    e.preventDefault();
}, false);
Run Code Online (Sandbox Code Playgroud)

这在旧版本的 IE 中不起作用,因为它不支持addEventListener,但你明白了。我建议使用另一个通用 JavaScript 库(如 jQuery),并使用它来设置事件处理程序。