找到了一个潜在的解决方案,但它似乎没有用。
$('svg')
.on("mousewheel.zoom", null)
.on("DOMMouseScroll.zoom", null) // disables older versions of Firefox
.on("wheel.zoom", null);
问题是地图正在点击事件重绘。在某些情况下,缩放事件没有被初始化,但滚动仍然在 SVG 元素上被捕获。当滚动被“捕获”时,它会阻止页面滚动(这不是所需的行为)。有没有办法以编程方式禁用滚动事件的捕获以放大 SVG?
D3 似乎是动态绑定的,我什至尝试过将绑定显式中断到极端:
$('.map-container, #map, g, svg, d3, div').off('scroll').unbind('scroll').undelegate('scroll');
$(window).off('scroll').unbind('scroll').undelegate('scroll');
$(document).off('scroll').unbind('scroll').undelegate('scroll');
这可能是我对绑定等基本知识的失败,或者 D3 可能是以一种非常有弹性的方式构建的。
有任何想法吗?(如果有任何答案,请解释一下,这对我来说很好奇!)