2009-03-08 6 views
1

J'ai une fenêtre encadrée (actuellement iframe, mais peut éventuellement être cadre) - Je ne contrôle pas cela.le DOM de parent d'accès du script dans un iframe dans IE Mobile

Je voudrais détecter si mon contenu est à l'intérieur d'un iframe (ou cadre).

Je voulais comparer l'emplacement du document en cours avec celui de l'objet en haut tient, mais il semble qu'il est le même objet (en haut === fenêtre).
Après de longues recherches sur Google, je suis arrivé à ce IEMobile blog entry et dans l'un des commentaires il y a cette réponse:

iemoblog dit:

Non, vous ne pouvez pas accéder à une partie du DOM du script du parent dans un iframe dans IE Mobile.
20 Décembre, 2007 24:12

Je ne peux pas sembler trouver toute la documentation à ce sujet - quelqu'un peut-il aider à confirmer ce ou mieux encore - suggérer une façon de détecter si la page est « encadrée »?

Répondre

2

Comme je n'ai pas eu nulle part après avoir trouvé le commentaire laissé dans le IE Mobile blog (par Charles Morris - directeur de programme de l'équipe mobile IE, sur son propre poste) Je suis forcé d'ajouter cette réponse et dire qu'il est:

Comme conçu (ou un bug au moins)

prc dit:

en ce qui concerne le support iframe: Je peux créer un iframe, mais je suis incapable de "regarder à l'extérieur" du cadre. "top" et "parent" semblent tous les deux se rapporter uniquement à l'iframe lui-même et non le ancêtre le plus haut ou ancêtre immédiat comme la documentation suggère qu'il devrait. Est-il possible de se référer à des variables javascript dans le document englobante à partir d'un iframe?

19 Décembre, 2007 21:29

iemoblog dit:

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

Décembre 20, 2007 12:12 PM

2

Le principal problème est que si le cadre est d'un autre domaine, puis le conteneur alors votre JavaScript est sandbox et ne peut pas accéder à l'autre châssis/conteneur.

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

peut-être quelque chose comme ceci:

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"; 
} 
+0

Merci pour la suggestion, malheureusement, il ne fonctionne pas sur le iemobile que j'utilise pour test (samsung omnia). – Dror

+0

Quel est le problème que vous avez avec cela? – Guss

+0

Désolé, il m'a fallu si longtemps pour répondre. Je veux garder mon contenu "décapsulé" dans un cadre. L'exécution du code fourni ne détecte pas la "mise en boîte" de mon contenu dans un cadre. Le code fonctionne bien pour tout autre navigateur. – Dror

Questions connexes