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



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

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

可能是JavaScript库中的一个错误(或简单的遗漏(。库需要在DOMMouseScroll事件上preventDefault()

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

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

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

相关内容

  • 没有找到相关文章

最新更新