ДЕЛО
У меня есть два ползунка, которые состоят из объекта rect
, который можно перетаскивать по горизонтали с помощью d3.drag()
и регулирует размердиаграммы, которую я создал.Поскольку эта диаграмма может расширять границы SVG width
, я автоматически настраиваю viewport
и width
после изменения размера диаграммы.При этом div
, в котором находится SVG, также может выходить за границы экрана, добавляя полосу прокрутки.
ПРОБЛЕМА
Если я сейчас попытаюсь перетащить свой rect
, он выдаст мне следующее сообщение об ошибке:
Игнорируется попытка отменить событие TouchMove с Cancellable = false, например, потому что прокрутка выполняется и не может быть прервана.
Я думаю, это потому, что событие прокруткина самом деле срабатывает, а не перетащить.Поэтому я попытался предотвратить прокрутку, но d3.event.sourceEvent.preventDefault()
или d3.event.sourceEvent.stopPropagation()
в событии dragstart ни к чему не привели.
При использовании опции просмотра Chrome Mobile в Dev Tools я все еще могу перетащить rect
после прокрутки до конца направления перетаскивания.Но на моем устройстве Android он просто зависает при возникновении этой ошибки.
МОЙ КОД
var sliderDrag = d3.drag()
.on("start", function () {
d3.event.sourceEvent.preventDefault();
d3.select(this).style("stroke", "#f39200");
})
.on("drag", function (d) {
//move the slider
})
.on("end", function () {
//adjust the size of the SVG
});
var sliderRect = g.append("rect")
.attr("class", "sliderRect")
.attr("x", 50)
.attr("y", 50)
.attr("width", 80)
.attr("height",80)
sliderDrag(sliderRect)