Я столкнулся с проблемой, поднятой здесь и здесь . Мое приложение d3 отлично работает на Chrome с помощью сенсорного дисплея на Mac, но d3.drag не удалось, когда я переключился на производственную машину Windows, на которой работает Chrome v.74. Я применил решение .touchable(navigator.maxTouchPoints)
, как предложено на связанных страницах выше. Это позволило мне перетащить элемент в Windows Chrome v.74 с помощью сенсорного экрана, но теперь я получаю:
UncaughtTypeError: Не удалось выполнить 'elementFromPoint' для 'Document': предоставленное двойное значение не является конечным.
так что мои события перетаскивания не запускаются.
Я использую document.elementFromPoint (), чтобы определить, когда перетаскиваемый элемент находится над другим элементом:
this.svg.dragCirclesGroup
.call(drag()
.touchable(navigator.maxTouchPoints)
.on("start", this.dragStarted)
.on("drag", this.dragged)
.on("end", this.dragEnded));
dragged() {
select(this).attr("transform","translate("+[event.x,event.y]+")")
let hitZone = select(document.elementFromPoint(event.sourceEvent.clientX, event.sourceEvent.clientY)).attr("id");
if ((hitZone == "yHitZone") || (hitZone == "xHitZone")) {
select('body').classed("plus", true);
} else {
select('body').classed("plus", false);
}
}
Это проблема только касания, так как перетаскивание и document.elementFromPoint отлично работают, когда я использую мышь.