К моему удивлению, MouseEvent.offset{X,Y}
- это , предполагается, что должны быть представлены числами с плавающей запятой двойной точности, хотя я никогда не видел и не использовал их в дикой природе:
Возвращаемое значение
A double значение с плавающей запятой.Ранние версии спецификации определяли это как integer .Подробности см. В разделе совместимости браузера.
В таблице совместимости утверждается, что Chrome 56 и далее изменил свое внутреннее представление на двойное.
Согласно комментариям к этому вопросу вы можете получить субпиксельное разрешение, но, похоже, оно зависит от аппаратного обеспечения .Например, моя текущая настройка (простой ЖК-монитор Benq 1080p в Windows 10) не обеспечивает субпиксельного разрешения, поэтому значения возвращаются в виде целых чисел.
Так что вам придется учитывать это при переносе приложенияи предположим, что субпиксельное разрешение является функцией, предлагаемой при прогрессивном улучшении - в некоторых случаях это выглядит довольно редко - и Math.floor()
/ .ceil()
ваши значения в противном случае.
Полагаю, вы могли обнаружить субэффектПиксельная способность путем простого поиска десятичного значения в возвращаемом значении (т. е. Number.isInteger(MouseEvent.offsetX)
).