Question

J'ai une fenêtre encadrée (actuellement iframe mais il est possible que ce soit frame) - je n’ai pas le contrôle sur cela.

Je souhaite détecter si mon contenu se trouve dans une iframe (ou un cadre).

Je souhaitais comparer l'emplacement du document actuel à celui de l'objet supérieur mais il semble que ce soit le même objet (fenêtre du haut ===).
Après une longue recherche sur Google, je suis arrivé à cette IEMobile entrée de blog et dans l'un des commentaires, il y a cette réponse:

  

iemoblog a déclaré:

     

Non, vous ne pouvez accéder à aucune partie de la   DOM du parent du script dans une iframe   dans IE Mobile.
  20 décembre 2007 12h12

Je n'arrive pas à trouver de documentation à ce sujet - quelqu'un peut-il nous aider à confirmer cela ou même mieux - à suggérer un moyen de détecter si la page est "encadrée"?

Était-ce utile?

La solution 2

Comme je ne suis allé nulle part après avoir trouvé le commentaire laissé dans le Blog IE Mobile (par Charles Morris - Directeur de programme de l'équipe IE Mobile, pour son propre message) Je suis obligé d'ajouter cette réponse et de préciser qu'elle est:

Comme prévu (ou au moins un bogue)

  

prc a déclaré :

     

en ce qui concerne le support iframe: je peux   créer un iframe, mais je suis incapable de   " regarder dehors " le cadre. & top; top " et   " parent " les deux semblent se référer uniquement à   l'iframe lui-même et non le top   ancêtre ou ancêtre immédiat en tant que   la documentation suggère qu'il le devrait.   Y at-il un moyen de faire référence à javascript   variables dans le document joint   à partir d'un iframe?

     

19 décembre 2007 21h29

     

iemoblog a déclaré :

     

Non, vous ne pouvez accéder à aucune partie de la   DOM du parent du script dans une iframe   dans IE Mobile.

     

20 décembre 2007 12:12   PM

Autres conseils

Le problème principal est que si le cadre provient d'un domaine différent, le conteneur est alors votre JavaScript est mis en sandbox et ne peut pas accéder à l'autre cadre / conteneur.

Ce que vous pouvez faire est d'essayer de comparer window à window.top et les résultats possibles sont les suivants: 1. Les sont les mêmes - > vous êtes la fenêtre du haut sur la page 2. Ils ne sont pas les mêmes - > vous n'êtes pas la fenêtre supérieure de la page, il y a une page conteneur, dans le même domaine que vous, qui contient votre fenêtre sous forme de cadre ou d'iframe. 3. Une exception de sécurité est levée - > vous n'êtes pas la fenêtre supérieure de la page, mais celle-ci provient d'un autre domaine et vous ne pouvez pas y accéder.

peut-être quelque chose comme ça:

try {
  if (window == window.top)
    return "I'm parent";
  else
    return "I'm a child of " + window.top.location;
} catch (e) {
  return "I'm a child of something from another domain";
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top