Accéder au DOM du parent à partir d'un script dans une iframe dans IE Mobile
-
05-07-2019 - |
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"?
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";
}