Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Получение абсолютных координат элемента из iframe (https://javascript.ru/forum/events/70062-poluchenie-absolyutnykh-koordinat-ehlementa-iz-iframe.html)

Winexcel 07.08.2017 20:04

Получение абсолютных координат элемента из iframe
 
Здравствуйте! Пытаюсь получить координаты элемента картинки с этой страницы https://learn.javascript.ru/drag-and-drop-objects из фрейма "js.cs /" следующим кодом:
document.querySelector('img');


Всё прекрасно работает:

Пробую получить координаты используя функцию getBoundingClientRect:
document.querySelector('img').getBoundingClientRect();

В ответе получаю:
ClientRect {top: 8, right: 72, bottom: 72, left: 8, width: 64…}

Что соответсвует действительности относительно вложенного фрейма "js.cs /". Вопрос заключается в следующем:
Как получить координаты этого же элемента относительно самого главного фрейма?(top). И возможно ли это вообще?

Winexcel 07.08.2017 20:25

Пытался найти способ как получить координаты самого фрейма но так и не нашел, подскажите пожалуйста как..
Цитата:

Сообщение от Rise (Сообщение 460902)
Winexcel,
У самого фрейма получить аналогичные координаты и сложить.


Winexcel 07.08.2017 20:29

Пробовал так(запуск из фрейма "js.cx /"):
window.frameElement.getBoundingClientRect();

Как результат:
window.frameElement.getBoundingClientRect();
VM8852:1 Uncaught TypeError: Cannot read property 'getBoundingClientRect' of null
    at <anonymous>:1:20

Winexcel 07.08.2017 20:45

Попрбовал следующее:
document.getElementsByTagName('iframe')[0].getBoundingClientRect();
ClientRect {top: 97.1875, right: 1142, bottom: 377.1875, left: 371, width: 771…}

Но нужно запускать скрипт именно из фрейма в котором находится элемент, возможно ли такое?
Цитата:

Сообщение от Rise (Сообщение 460905)
Winexcel,
Так выдели также как выделил картинку.


Winexcel 08.08.2017 06:03

Спасибо, но у меня проблема именно в том что этот фрейм находится на другом домене, и мне нужно получить как-то его координаты ...А возможно ли как-то получить внутри этого фрейма id по которому я обращаюсь к нему из главного фрейма в массиве frames?
document.getElementsByTagName('iframe')[0].getBoundingClientRect();

В данном случае вложенный фрейм имеет id = 0.
Возможно ли как-то получить эту цифру в самом вложенном фрейме?
Или другой вариант который поможет идентифицировать этот фрейм в массиве frames.


Часовой пояс GMT +3, время: 13:47.