6

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

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

4

1 回答 1

3

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

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

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

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

于 2011-07-06T21:09:26.553 回答