Проблема перетаскивания в Chrome, связанная с масштабом Windows (125%)

У меня проблема с перетаскиванием в Chrome (v69.0.3497.100). В частности, некоторые события перетаскивания запускаются, когда масштабирование Windows отличается от 100%, даже если они не должны запускаться.

Посмотрите пример stackblitz и попробуйте перетащить "синий" прямоangularьник над собой (просто перетащите, переместите немного вниз и опустите). Если масштабирование Windows установлено на 100% (масштаб браузера также равен 100%), то запускается одно событие (dragEnter), как и ожидалось (проверьте консоль). Но если масштабирование Windows установлено на 125% (но масштаб браузера по-прежнему равен 100%), то запускаются три события (два dragEnter и одно dragLeave), и я ожидал, что с момента перетаскивания элемента сработало только одно событие и упал на себя (как это было в случае со шкалой 100%).

Возможно, так как это масштабирование в Windows (а не в браузере), левый ("светлый") прямоangularьник больше, чем кажется, и он идет ниже правого прямоangularьника, и события передаются в него, хотя я не смог доказать поскольку все элементы имеют правильный размер в инспекторе.

Похоже, этого не происходит в последних версиях Firefox, IE или Edge.

Кто-нибудь знает, почему это происходит и как это исправить?

Ответ 1

Чем больше я смотрю на эту проблему, тем больше проблема Chromium. Несколько дней назад я задал вопрос, затем я хотел создать для него щедрость, а затем нашел ваш, и я считаю, что они взаимосвязаны: проблема с прокруткой субпикселя, не может правильно установить scrollTop на Chrome 69.

Есть некоторые сообщения об ошибках в отслеживании проблем Chromium, связанные с проблемой округления округления: ссылка 1, ссылка 2... Я также создал свою собственную ошибку: link 3. Там должно быть больше информации, но для исследования требуется слишком много времени. Я думаю, что мы можем объединить усилия и привлечь больше внимания к проблеме, и, например, если это Хром ответственность, чтобы помочь им в разъяснении и определении приоритетов.

Ответ 2

У меня та же проблема с версией 76.0.3809.100 (64-разрядная версия).

И я сместил изображение, чтобы компенсировать странное смещение, которое я получаю и в вашем примере stackbliz.

Но при масштабировании 200% мне нужно умножить вычисленное смещение dragImage на 4 !!!

На 300% это при 9
На 350% это при 12,25

Вы видите шаблон???!

Я боюсь моего взлома/исправить эту проблему. Не уверен, что это только на Windows, если это просто рабочий стол. Но сейчас, я думаю, мне нужно будет выполнить window.devicePixelRatio ^ 2, чтобы я мог продолжить свою работу.