Преобразование координат в SVG внутри Firefox с полосами прокрутки - PullRequest
2 голосов
/ 10 августа 2010

Я пытаюсь вычислить правильные координаты мыши в пользовательском координатном пространстве в документе SVG из кода Javascript, когда появляются полосы прокрутки, когда этот файл SVG просматривается из FireFox. Но это не совсем правильно. Это необходимо для правильного отображения подсказок на основе SVG, даже если SVG прокручивается по горизонтали или по вертикали.

Я хочу, чтобы преобразования координат были правильными в браузерах IE и Firefox. Кроме того, я хочу сделать это с помощью Javascript + SVG с одним исходным кодом, который, как мы надеемся, не требует специфического для браузера условного кода. В настоящее время я использую FireFox 3.5.10, но я бы подумал о переходе на более новую версию FireFox, и я еще не тестировал IE.

Проблема, с которой я столкнулся, заключается в смещении координат для полос прокрутки: Преобразование координат мыши недостаточно, когда появляются полосы прокрутки над элементом SVG внутри Firefox. В качестве средства отладки, чтобы выяснить преобразования координат, я работаю с простым SVG-файлом, который содержит обработчики Javascript, все в одном файле, который просто рисует перекрестие в курсоре мыши как объекты линии SVG. Найти его можно по адресу svg_cross_hairs.svg . Если вы загрузите этот файл в FireFox и укоротите окно FireFox до появления полос прокрутки, а затем прокрутите вертикальную или горизонтальную полосы прокрутки, вы обнаружите, что перекрестие, нарисованное Javascript, смещается на величину горизонтальной или вертикальной прокрутки что неверно для рисования объекта всплывающей подсказки в том месте, где на самом деле находится курсор мыши.

Я вижу Firefox: получить координаты мыши в верхнем левом углу окна просмотра , который говорит о свойстве scrollTop .

msg # 00056 поясняет, что существует путаница в значениях атрибутов element.{pageX,pageY,clientX,clientY} и метода element.getscreenCTM.

Есть ли более понятный способ получения правильной координаты мыши в пользовательской системе координат?

1 Ответ

1 голос
/ 11 августа 2010

Вы можете использовать evt.pageX / evt.pageY или window.pageXOffset / window.pageYOffset, чтобы получить что-то, что работает, даже если svg прокручен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...