Окончательные координаты элемента на странице
Подскажите пожалуйста, если я правильно понимаю, то происходит следующее:
К примеру загружается страница и я поставил прослушивать Mutationobserver на появление класса отвечающего за какую то к примеру кнопку. Mutationobserver срабатывает - сообщая о том, что в document`е появился элемент отвечающий за кнопку. Далее я сразу вызываю .getBoundingClientRect() на этом элементе и соотвесвенно возвращаются координаты, но, если вызвать getBoundingClientRect() условно через еще одну секунду, то коордианты будут уже другие. Если я правильно понимаю, то элемент на странице, как бы появляются не сразу на своем окончательном месте, а как бы отрисовывается постепенно и если это так - то вот, как можно понять, что элемент уже все - на всоем месте и коордианты его более не изменятся ? |
Смотря в какой момент срабатывает Mutationobserver. Если до события window.onload, то до этого момента стили css еще могут быть не загружены и не применены, img не загружены, и их размеры не известны, поэтому окончательные координаты не известны.
Если до события DOMContentLoaded, то даже не все элементы загрузились и не все DOM дерево построено. По мере построения дерева и размещения других элементов, координаты могут меняться. |
Цитата:
По факту так - страница полностью загружена, я нажимаю на ней кнопку и после нажатия кнопки появляется/выезжает условно контекстное меню, ну то есть выезжает "окошечко" с другим кнопками - вот ее я и отслеживаю в Mutationobserver и вот именно там проблема с координатами. |
Как "выезжает"? Оно постепенно двигается?
|
Цитата:
|
Постепенно появляться можно по разному. Можно просто менять прозрачность, можно двигаться (выезжать) сбоку или сверху.
Если двигается, то конечно координаты меняются. |
Цитата:
|
Что возможно?
Создается какой то элемент, он внедряется в DOM с какими то координатами. Потом, по какой то причине начинает "выезжать". Пусть даже быстро. Разумеется его координаты меняются. |
Цитата:
Если там используется CSS со свойством transition, то надо ловить событие transitionend. https://developer.mozilla.org/ru/doc...itionend_event |
Часовой пояс GMT +3, время: 19:53. |