在iPhone上,D3的平移/縮放行爲不能很好地工作。要查看該問題,請在iPhone上訪問此頁面:http://bl.ocks.org/mbostock/3892919D3平移/縮放行爲在移動Safari上不起作用
當您平移時,整個瀏覽器窗口往往會被拖動。當你縮放時,iPhone本身通常會放大頁面,而不是D3元素捕捉夾點事件。
我使用D3 v3.5.17。這發生在移動Safari和iPhone上的Chrome上(但我們都知道這仍然只是Safari)。
經過進一步調查,似乎某些SVG元素(例如<rect>
和<circle>
)將正確捕獲觸摸事件,引導它們通過D3,並阻止移動瀏覽器響應它們。其他SVG元素(如<svg>
和<g>
)將忽略觸摸事件,並且它們會冒泡到瀏覽器。
我試着將一個touchmove
處理程序附加到SVG元素,並使用event.preventDefault()
來試圖阻止瀏覽器接管事件。這是行不通的。
我試過從容器SVG的不同元素調用d3.behavior.zoom()...
返回的函數。這也是行不通的。
如何讓整個SVG在iOS瀏覽器上正確響應觸摸事件(拖拽)?