Определите, виден ли iframe на экране

У меня есть iframe, который загружается на внешние сайты, на которые я не могу поместить какой-либо код. Что я хотел бы определить из своего iframe (другой домен), так это то, что iframe в настоящее время находится в «порте просмотра» браузере (или если он прокручивается за пределы страницы).

Есть ли способ сделать это? Поскольку я не верю, что могу получить доступ к свойствам высоты прокрутки и области просмотра родительской страницы (из-за перекрестного домена), если я не ошибаюсь.

Спасибо


person Adam Heath    schedule 11.12.2009    source источник
comment
Кто-то спросил точно тот же вопрос недавно.   -  person Pekka    schedule 11.12.2009


Ответы (2)


Нет, это невозможно сделать, потому что вы не можете получить доступ к документу родительского домена. Это необходимо для определения положения элемента iframe. Вы можете получить размер экрана пользователя, но это все. Ваш iframe может быть невидимым, и вы не сможете сказать об этом. Прости!

person Josh Stodola    schedule 11.12.2009
comment
К сожалению, теперь я с вами согласен, спасибо, что подтвердили, что я ничего не пропустил в своем поиске. - person Adam Heath; 11.12.2009

Я знаю, что это старый вопрос, но был выпущен новый API из Chrome, который может ответить на ваш вопрос о последних версиях Chrome (22+).

InteractionObserver вы можете найти его здесь: https://github.com/WICG/IntersectionObserver

Существует полифилл, который разрабатывается (тот же репозиторий), но он не будет работать из iframe afaik, только если скрипт находится на родительской веб-странице.

Для других браузеров есть некоторые темные способы сделать это, основанные на атаке по времени, эта статья довольно хорошо объясняет это: http://www.contextis.com/documents/2/Browser_Timing_Attacks.pdf

person deKajoo    schedule 03.10.2016