找到了一個潛在的解決方案,但它似乎沒有工作。在地圖上禁用滾動事件
$('svg')
.on("mousewheel.zoom", null)
.on("DOMMouseScroll.zoom", null) // disables older versions of Firefox
.on("wheel.zoom", null);
的問題是在click事件被重新繪製地圖。在某些情況下,縮放事件未被初始化,但仍然通過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是建立在一個非常有彈性的方式。
任何想法? (!如果任何答案,請他們解釋,這是好奇的我)
您不能在不修改源代碼的情況下顯式禁用它,但在事件處理程序中,您可以檢查事件的來源並忽略它是否來自滾動。 –