2009-12-11 2 views
4

J'ai un iframe qui est chargé dans des sites externes dont je ne peux pas mettre de code. Ce que je voudrais pouvoir déterminer à partir de mon iframe (domaine différent) est si l'iframe est actuellement dans la «fenêtre d'affichage» du navigateur (ou s'il est défilé sur la page).Déterminez si un iframe est visible à l'écran

Y a-t-il un moyen de le faire? Comme je ne crois pas que je peux accéder aux propriétés de hauteur de la barre de défilement et de la fenêtre d'affichage de la page parente (en raison du domaine croisé), à moins que je me trompe.

Merci

+0

Quelqu'un a demandé [exactement la même question] (http://stackoverflow.com/questions/ 1860931/what-optimisations-does-a-browser-perform-when-a-dom-element-is-being-rendered-of) récemment. –

+0

Désolé je n'ai pas vu ça! –

Répondre

4

Non, il ne peut pas être fait parce que vous ne pouvez pas accéder au document du domaine parent. C'est nécessaire pour déterminer la position de l'élément iframe. Vous pouvez obtenir la taille de l'écran des utilisateurs, mais c'est à peu près tout. Votre iframe pourrait être invisible et vous n'auriez aucun moyen de le dire. Pardon!

+0

Malheureusement, je suis maintenant d'accord avec vous, merci de confirmer que je n'avais rien raté dans ma recherche –

0

Je sais que c'est une vieille question, mais une nouvelle API de Chrome ont été libérés qui pourrait répondre à votre question sur les dernières versions de Chrome (22+)

Le InteractionObserver vous pouvez le trouver ici: https://github.com/WICG/IntersectionObserver

Il y a un polyfill qui est en cours de développement (même repo) mais il ne fonctionnera pas à partir de l'afaik iframe seulement si le script est sur la page Web parent.

Pour les autres navigateurs leur est une certaine façon de le faire sombre basé sur l'attaque de synchronisation, cet article explique assez bien: http://www.contextis.com/documents/2/Browser_Timing_Attacks.pdf

Questions connexes