4 votes

Existe-t-il un moyen astucieux pour Javascript de savoir qu'il est exécuté dans une iFrame ?

J'ai besoin que le script change dynamiquement son fonctionnement si la page est intégrée via un iFrame.

Le script sera appelé dans le source iFrame à partir d'un <script.. et ne sera pas du javascript en ligne.

Merci d'avance !

Mise à jour : David a fourni cette réponse qui fonctionne dans Firefox et Chrome mais pas dans IE8. Toute aide à ce sujet est appréciée : )

if (window !== top) {
  alert('im in an frame');
}

Mise à jour2 : Apparemment, c'est un question de duplication la bonne réponse est :

if (top === self) { alert('parent'); } else { alert('iframe'); }

Le mérite revient à Greg

3voto

Quentin Points 325526
if (window != top) {
  // In a frame of some kind
}

0voto

kennebec Points 33886

IE ne renvoie pas true pour l'opérateur d'équivalence (===) pour deux références au même objet fenêtre - même dans une fenêtre de niveau supérieur, if(window===top) renvoie false.

Mais l'opérateur d'égalité plus simple if(window==top) renvoie vrai dans tous les navigateurs si l'objet est la fenêtre supérieure, et faux s'il s'agit d'un iframe contenu dans une fenêtre.

0voto

Mohammad Points 1787
if (top === self) { alert('parent'); } else { alert('iframe'); }  

Fonctionne très bien ! Le mérite revient à Greg

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