Клуб API Карт

Координаты layerY в IE8

Пост в архиве.

Здравствуйте.

Обычно я получаю координаты layer курсора мыши из события карты таким образом - e.originalEvent.domEvent.originalEvent.layerY, где «e» - это событие карты, в данном случае mousedown.

Однако, в IE8 такой способ не работает, пишет 'undefined'. Не могли бы вы подсказать, как это сделать все же в IE8?

Спасибо.

3 комментария

Попробуйте e.get('domEvent').get('position')

Артур Покрашенко
28 января 2016, 03:13

спасибо. помогло. для IE < 9 почему-то работает e.get('position'), а для 9 приходится использовать e.originalEvent.domEvent.originalEvent.layerY (или layerX). Впрочем, возможно, это особенности моего кода и верстки. 

Sergey Konstantinov
28 января 2016, 03:13

layerX/layerY отсутствуют в событиях в IE < 9: http://docstore.mik.ua/orelly/webprog/jscript/ch19_03.htm

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

Полагаю, что вы используете layerX/layerY именно для получения координат в окне браузера. В этом случае изменение вёрстки страницы (появление абсолютно спозиционированного элемента) сломает ваш код. Не используйте layerX/layerY для определения координат в окне браузера, для этих целей предназначены pageX/pageY.

В API Карт e.get('position') возвращает пару [pageX, pageY] координат, нормализованных с учетом особенностей всех браузеров.