54 votes

Détecter l'intégration d'iFrame en Javascript

J'ai une application qui a une certaine page - appelons-la page A. La page A est parfois une page de niveau supérieur, mais elle est parfois aussi intégrée en tant que iframe dans la page B. Toutes les pages proviennent du même serveur et il n'y a pas problèmes inter-domaines.

J'ai un script greasemonkey qui s'exécute à la page A. Comment le script greasemonkey peut-il détecter si la page A se trouve ou non dans le contexte de l'iframe?

127voto

annakata Points 42676

Examiner la longueur des images se décompose généralement si la page A elle-même contient des images (je sais que cela pourrait ne pas être le cas pour cette instance spécifique). Le test le plus fiable et significatif serait:

 if (window!=window.top) { /* I'm in a frame! */ }
 

11voto

Artem Barger Points 18789

Le prédicat

 (window.parent.frames.length > 0)
 

vous dira ce que vous voulez.

6voto

Mike Grace Points 6718

4voto

zachberry Points 11

Comme indiqué ci-dessus, la solution acceptée ne fonctionne pas dans IE8. En outre, la vérification de window.parent.frames.length peut provoquer une exception interdomaine.

Au lieu de cela, j’ai pu atteindre cet objectif avec var isInIFrame = top.location != self.location - cela fonctionne dans IE8 et cela ne provoque pas de violation de domaine tant que vous n’essayez pas de lire le contenu de top.location .

0voto

Pink Duck Points 121

Utilisez window.frameElement et vérifiez si ce n’est pas null et si son nodeName est "IFRAME".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X