Координаты экрана элемента, с помощью JavaScript

Я пытаюсь получить координаты экрана (то есть, относительно верхнего левого угла экрана) элемента в окне браузера. Легко получить размер и положение окна (screenX, screenY), и легко (с jQuery) получить смещение элемента ($ ('элемент') .offset () .left).

Однако я должен знать, сколько пикселей это от элемента полностью к углу экрана. Я нашел некоторые вещи, которые, кажется, характерны для IE, но я хотел бы, чтобы это работало в как можно большем количестве браузеров.

Отредактированный для добавления изображения: alt text

28
задан Glorfindel 22 June 2019 в 07:03
поделиться

2 ответа

window.screenX / Y не поддерживаются в IE. Но для других браузеров положение приблизительно равно:

var top = $("#myelement").offset().top + window.screenY;
var left = $("#myelement").offset().left + window.screenX;

Точное положение зависит от того, какие панели инструментов видны. Вы можете использовать свойства outer / innerWidth и outer / innerHeight объекта window , чтобы немного приблизиться.

IE не предоставляет много свойств окна, но, как ни странно, объект события щелчка предоставит вам местоположение щелчка на экране. Итак, я полагаю, у вас может быть страница калибровки, которая просит пользователя «щелкнуть красную точку» и обработать событие с помощью

function calibrate(event){
    var top = event.screenY;
    var left = event.screenX;
}

Или, возможно, использовать события mouseenter / leave , используя координаты этого события для калибровки .Хотя у вас возникнут проблемы с определением, введена ли мышь слева, справа, сверху или снизу.

Конечно, как только они переместят экран, вам придется откалибровать его заново.

Подробнее о совместимости свойств браузеров см. Таблицы объектной модели PPK .

12
ответ дан 28 November 2019 в 03:53
поделиться

Я не думаю, что это возможно.

Координаты элемента относятся к левому верхнему углу отображаемой страницы.

Координаты окна указаны относительно экрана.

Насколько мне известно, нет ничего, что связывало бы верхний левый угол отображаемой страницы с верхним левым углом окна . Так что нет никакого способа учесть границы, полосы прокрутки, хром и т. Д. Так что я думаю, что вы погрязли в этом.

4
ответ дан 28 November 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: