2017-10-17 85 views
2

我在official documention of d3.zoom中找不到關於此的信息,但顯然,縮放區域在Google Chrome瀏覽器和Mozilla Firefox瀏覽器中確實有效,但不適用於Microsoft Internet Explorer或Edge。這已經可以看到在官方演示的一個:https://bl.ocks.org/mbostock/d1f7b58631e71fbf9c568345ee04a60ed3的捏到縮放不適用於IE/Edge?

當IE11 /邊緣然後代替頁面縮放將觸發可禁用做雙指縮放使用-ms-content-zooming: none(奇怪的是沒有touch-action),但不是我想要的。

我的評價正確嗎?有什麼可以做的嗎?也許有些polyfill存在?

回答

1

似乎是一個長期的D3頁上的這個錯誤報告(2013年):

https://github.com/d3/d3/issues/989

從源代碼中,它看起來像D3採用事件touchstart.zoomtouchmove.zoomtouchend.zoomtouchcancel.zoom

從我在網上可以找到的信息來看,IE不支持那些觸摸事件at all,而Edge只支持它if the device doesn't have a keyboard。如果是這樣,它需要是enabled manually

因此,您不能依靠觸摸事件在IE或Edge中被d3正確處理。

但是有相當多的polyfills旨在糾正這個問題。因爲我沒有任何觸摸功能的Windows設備我無法測試,如果任何一個正常工作,但也許嘗試那些:

+0

指針事件似乎是唯一的出路(另請參閱https://github.com/d3/d3/issues/1439,包括最後的評論),但遺憾的是沒有更多的工作可以從d3的si de(https://github.com/d3/d3/pull/2403),它可能可以像https://mdn.github.io/dom-examples/pointerevents/Pinch_zoom_gestures.html – phk