Неправильно ли положение мыши в QuirksMode для SVG на вкладке jQueryUI? - PullRequest
0 голосов
/ 06 января 2012

Я только что заметил что-то странное. Если я рисую форму SVG, координаты, которые я предоставляю, поскольку атрибуты формы x и y не совпадают с координатами, возвращаемыми событием мыши в этой форме, при использовании стандартных способов возврата положения мыши.

Например, если я нарисую прямоугольник следующим образом:

shape = svgDocument.createElementNS(svgNS, "rect");
shape.setAttributeNS(null, "x", rect_x);
shape.setAttributeNS(null, "y", rect_y);
...
shape.addEventListener("mouseover", etc);

в процедуре события я получаю положение мыши с помощью алгоритма QuirksMode («правильный скрипт для определения координат мыши», на http://www.quirksmode.org/js/events_properties.html). Для координаты Y я должен исправить Значение QuirksMode следующим образом, чтобы добраться до 'rect_y':

F/F 8  subtract 105
Webkit subtract 103
IE9    subtract 104
Opera  subtract 103

Что также любопытно, это то, что и Webkit, и IE9 предоставляют evt.offsetY и устанавливают его в «правильную» позицию (в точности равную «rect_y»). FF оставляет offsetY неопределенным, а Opera устанавливает его в 1.

Я подозреваю, что проблема в том, что это находится на вкладке jQueryUI, хотя я еще не проработал это. Кто-нибудь видел это? Какие-нибудь мысли?

1 Ответ

0 голосов
/ 06 января 2012

В SVG вы использовали бы метод getScreenCTM для преобразования координат, а не offsetX или offsetY и т. Д. Здесь приведен пример: http://www.carto.net/svg/eventhandling/ Поиск компонента «Преобразование клиента X в viewBox». Это немного сложно, так как пытается справиться со старыми UA, такими как ASV3, у которых нет метода getScreenCTM.

...