GetBoundingClientRect не работает за пределами окна
Я делаю сценарий, который должен измерять расстояния в сообщении. Например, если у меня есть три сообщения:
- Пост 1: две строки текста, затем изображение, которое я хочу увидеть.
- Пост 2: Просто изображение, которое я хочу увидеть.
- Пост 3: изображение, которое я хочу увидеть. За ним следуют две строки.
Причина, по которой я этого хочу, заключается в том, что я думаю, что Tumblr демонстрирует слишком много глупостей в своих различиях. Я делаю расширение для Chrome, которое обрезает всю чушь вокруг изображений, чтобы вам приходилось меньше прокручивать. на каждом посте появится кнопка, чтобы увидеть весь пост.
На сегодня это прекрасно работает! С getBoundingClientRect
Я могу получить верхнее, левое, нижнее и правое смещение от окна. Есть только 1 проблема. Я не могу сделать это сразу для всех постов на странице, потому что, если пост находится на расстоянии 700 пикселей от видимой части документа, той части, которую вы просматриваете в браузере, все значения, предоставленные GBCR, будут 0.
Эти значения недопустимы и, вероятно, равны нулю, поскольку сообщение не отображается на экране. И я мог бы заставить мое расширение пытаться получить размеры, если я прокручиваю, так что когда сообщение попадает в видимую часть окна, оно обрабатывается. Но это не имеет моего предпочтения. Это означало бы, что мои функции JS должны запускаться каждый раз, когда пользователь выполняет прокрутку, что является плохой практикой. Я предпочитаю запускать свои функции при загрузке dom, поэтому, если будут добавлены новые сообщения, функции будут активированы.
Мой вопрос к вам следующий: есть ли обходной путь, чтобы убедиться, что функция GBCR работает, когда сообщение не отображается на экране. Или есть способ, которым я могу получить координаты элемента с getComputedStyle
(не пройдя все элементы)?