Сенсорная обработка полностью сломана на Chrome версии 70 - PullRequest
0 голосов
/ 09 ноября 2018

Похоже, что Google Chrome v70 полностью испортил использование D3 для ноутбуков с сенсорным экраном.

Мы работаем с планшетом Panasonic FZ-M1, где мы запускаем некоторые веб-серверы, которые создают представление топологии с принудительно ориентированным графом. так как вчера график совершенно не реагирует на жесты, вы не можете двигаться, вы не можете масштабировать, ничего. Мы установили Chrome v69, и тогда он работает отлично. К сожалению, Chrome - автообновление. Протестировано с D3 v5.7.0, все тот же.

Вы можете попробовать использовать ноутбук или планшет с сенсорным экраном с примером направленного графа D3 в галерее или включить имитацию сенсорного экрана в инструментах разработчика.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Открыть следующее в браузере Chrome

chrome://flags

и найдите API сенсорных событий

установить Touch Events API на включено (по умолчанию теперь «отключено»)

Надеюсь, это работает.

0 голосов
/ 12 ноября 2018

D3 использует свойство ontouchstart для обнаружения функции, то есть прослушиватели событий касания присоединяются только при наличии этого свойства. Из-за изменений в Chrome v70 этот механизм обнаружения в D3 нарушен.

ontouch * API по умолчанию отключены на рабочем столе

Во избежание путаницы при обнаружении функции касания элементы ontouch * на window, document и element по умолчанию отключены на настольном компьютере (Mac, Windows, Linux, ChromeOS). Обратите внимание, что это не отключает касания, и использование, такое как addEventListener("touchstart", ...), не затрагивается.

Related: Отключить устаревшие API сенсорных событий на рабочем столе

Ваши ноутбуки под управлением Windows, скорее всего, обнаруживаются как настольные устройства, а не мобильные устройства. Следовательно, на них влияют эти изменения в Chrome v70, в результате которых прослушиватели событий касания больше не регистрируются.

Об этой проблеме ранее сообщалось как о проблеме в модуле перетаскивания d3: # 47 Предстоящие изменения обнаружения касаний в настольном Chrome . Когда я прокомментировал этот вопрос, предоставив ссылку на этот вопрос, к счастью, Майк Босток ответил в течение часа. Более того, существует простое решение проблемы: вы можете использовать drag.touchable(detector), чтобы контролировать, когда применять приемники событий касания, переопределяющие поведение по умолчанию:

Прослушиватели событий касания регистрируются только в том случае, если детектор возвращает истину для соответствующего элемента при применении режима перетаскивания.

Как подсказал Майк drag.touchable(navigator.maxTouchPoints) кажется хорошим кандидатом. Ядерная опция drag.touchable(true) обеспечит применение слушателей сенсорных событий в любом случае.

...