Vis.js 将vis网络图配置为仅在收缩时缩放,而不在鼠标滚动时缩放

Vis.js 将vis网络图配置为仅在收缩时缩放,而不在鼠标滚动时缩放,vis.js,vis.js-network,Vis.js,Vis.js Network,我有一个由vis.js创建的大型网络图,它在浏览器中100%宽,非常高,因此需要向下滚动页面才能看到所有内容-我希望我的页面能够像世界上大多数其他网页一样运行-但是当我滚动时,vis.js会缩放,而不是滚动页面。如何关闭卷轴的缩放功能,但仍允许进行例如捏(或按住键+卷轴) 当然,我可以使用此选项关闭缩放-并添加一些内置的缩放按钮: var options = { interaction: { zoomView: false, navigationButtons: true,

我有一个由vis.js创建的大型网络图,它在浏览器中100%宽,非常高,因此需要向下滚动页面才能看到所有内容-我希望我的页面能够像世界上大多数其他网页一样运行-但是当我滚动时,vis.js会缩放,而不是滚动页面。如何关闭卷轴的缩放功能,但仍允许进行例如捏(或按住键+卷轴)

当然,我可以使用此选项关闭缩放-并添加一些内置的缩放按钮:

var options = {
  interaction: {
    zoomView: false,
    navigationButtons: true,
  }
};
但这并不理想。它要求用户滚动到页面底部以访问缩放控件。另外,我想要一个更容易访问的缩放功能(是的,我知道,我刚刚关闭了更容易访问的缩放功能)。Vis似乎有更多的方法重新缩放,而不是


总而言之:我希望禁用鼠标滚轮/轨迹板滚动来显示图表,这样可以提供自然的整页滚动行为,再加上捏一下(或按住一个键+滚动)来缩放。

我认为没有特定于vis网络的解决方案。您必须检测鼠标滚动并相应地进行处理,如下所示:

container.addEventListener("wheel", function(e){
    if (e.stopPropagation) e.stopPropagation();
    return false;
})
为了支持旧浏览器,您需要
DOMMouseScroll
mouseweel
事件


不幸的是,我手边没有鼠标,因此无法真正为您测试这一点,但这里有一个游乐场,您可以自己完成此操作:

捏缩缩放功能在onwheel侦听器中处理,并可以通过ctrlKey属性检测到。您可以使用自己的处理程序覆盖该处理程序,如果未检测到夹点,则立即返回,否则将照常执行

this.network = container ? new Network(container, data, options) : {};
const { interactionHandler } = this.network;
if (interactionHandler) {
    interactionHandler.body.eventListeners.onMouseWheel = (event) => {
        if (!event.ctrlKey) return; // ctrlKey detects a max touchpad pinch in onwheel event
        interactionHandler.onMouseWheel(event);
    };
}