javascript - 滚动页面时如何禁用 Canvas 元素劫持鼠标滚轮?

标签 javascript html html5-canvas chart.js

在 HTML5 中(我认为?),当鼠标悬停在页面上的 Canvas 元素上时,它们会中断滚动。

我使用 Chart.js 生成了一个页面,上面有很多图表,所有图表都呈现在一个元素内。

由于页面很长(垂直),用户经常会向上/向下滚动页面以查看各种图表。每次他们滚动到一个 上时,他们都必须将鼠标移开才能继续滚动,这很不方便。

有什么办法可以覆盖canvas元素对鼠标滚轮事件的控制吗?我没有与鼠标滚轮相关的功能。在此期间,我建议用户使用键盘快捷键。

一如既往地感谢这个非常有帮助的社区。如果我找到解决方法或解决方案,我会在此处发布。

最佳答案

如果你只是使用 Chart.js ,我认为 Chart.js 不会劫持 wheel 事件。但是如果你使用 chartjs-plugin-zoom在一起,车轮事件将被劫持。

(chartjs-plugin-zoom 是 Chart.js 的缩放和平移插件)

chartjs-plugin-zoom 在滚动时劫持鼠标滚轮。如果您希望用户使用鼠标滚轮向上或向下滚动页面,而不是放大或缩小图表,您可以从图表中取消注册滚轮事件,如下所示:

var myChart = new Chart(ctx, {...});
myChart.ctx.canvas.removeEventListener('wheel', myChart._wheelHandler);

您可以在需要时重新添加事件处理程序:

myChart.ctx.canvas.addEventListener('wheel', myChart._wheelHandler);

查看 this example on jsfiddle .

关于javascript - 滚动页面时如何禁用 Canvas 元素劫持鼠标滚轮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44487554/

相关文章:

javascript - 我应该将对象属性传递给对象方法吗?

html - 如何在缩小窗口时创建水平滚动条

javascript - 如何制作可点击颜色变化的网格?

javascript - Canvas 中的事件

html - 所有内容的自动调整布局

javascript - Three.js canvas.toDataURL() 在 Chromium 中损坏了吗?

javascript - Angular 隔离范围值可以由 "true"或空设置

javascript - 我可以将 Javascript 中的变量传递给 child_process.exec 命令吗?

javascript - Angular Material md-subheader 不粘

javascript - 使用多个 XSLT 文件转换单个 XML 文件