Pourquoi pas un iframe ensemble de son parent.de hachage?
J'ai une fenêtre contenant une iframe contenant une iframe, comme suit:
+---------------+
| Top |
| +-----------+ |
| | Middle | |
| | +-------+ | |
| | | Inner | | |
| | +-------+ | |
| +-----------+ |
+---------------+
Du haut et du Milieu sont sur le même domaine, mais l'Intérieur est dans un domaine différent. J'ai besoin d'Intérieur pour communiquer avec Top. La seule façon que je connaisse pour faire ce qui est pris en charge dans IE7 (j'ai besoin de soutien) est de changer la valeur de hachage de la fenêtre de l'emplacement. Cependant, je ne veux pas l'information pour être le scintillement dans la barre d'adresse, j'ai donc introduit au Moyen d'une iframe.
Je veux Intérieure de changer de Moyen de hachage. Moyen va lire sa hachage et d'informer Haut, qu'il a la permission de parler directement à.
Cependant, dans Firefox 3, j'ai été incapable d'écrire au Milieu de hachage de l'Intérieur. Aucune erreur n'est générée, mais le hachage semble inchangée. Écrit à son location.href
soulève une erreur de permission.
Haut peuvent écrire au Milieu de la table de hachage, cependant, et le Milieu peuvent s'écrire à l'Intérieur de hachage, et Top pouvez écrire à l'Intérieur de hachage, et de l'Intérieur et du Milieu peut à la fois écrire Dessus du hachage, de sorte que le seulement ordonné paire qui ne fonctionne pas est celui que je veux! (J'ai travaillé sur cette question depuis un certain temps.)
J'ai reproduit ce dans un minimum de cas de test. Au début, j'ai servi tous les trois pages du même domaine. Quand j'ai mis Intérieure sur un autre domaine, j'ai un comportement problématique. Quand je mets du Milieu sur la deuxième domaine, tout le monde peut écrire à nouveau tout le monde.
Pourquoi ne peut-Intérieure écrire au Milieu du hash?
Additif: Beaucoup de gens ont suggéré que cela ne devrait pas être possible en raison de la même origine. C'est exactement la politique que je suis en train d'essayer de se déplacer. Ce cas précis--réglage (mais ne pas lire) autre fenêtre à l'emplacement de l'--est censé être possible dans tous les domaines. Je n'ai pas trouvé de documentation de navigateur à cet effet, mais j'ai trouvé beaucoup d'articles et de démos. C'est essentiellement le précurseur de l'HTML 5 de la postMessage()
.
Ref: http://softwareas.com/cross-domain-communication-with-iframes
il y a un dupe de cette question sur -- un bug dans Bugzilla.
Bon à savoir. Avez-vous des liens vers ceux-là? Poster une réponse, et je vais l'accepter.
OriginalL'auteur Peeja | 2009-06-15
Vous devez vous connecter pour publier un commentaire.
Parent images pouvez définir des enfants iframe 'src' attribut (ici avec jquery) à l'aide de:
Enfants iframes pouvez définir parent de la fenêtre href (barre d'adresse de contenu) à l'aide de:
et dans le père et/ou de l'enfant, vous avez besoin de sondage pour les changements,
remarque, il serait bien si vous pouviez
mais la lecture de l'emplacement de l'objet ("href" et de hachage) n'est pas autorisé
testé sur 3 Nov 11, sur chrome, ie6/7/9, firefox 3.6/4
edit1: pouvez mettre une démo en direct si les gens aimeraient
edit2: http://dl.dropboxusercontent.com/u/14376395/html/xdomain.html 🙂
edit3: attention: si vous utilisez cette méthode, assurez-vous d'avoir le contrôle sur tous les iframe avais pages sinon infâme 3ème sites de tiers pourrait potentiellement contrôle de la vôtre à l'aide de balises de hachage
edit4: meilleure solution http://ternarylabs.com/2011/03/27/secure-cross-domain-iframe-communication/ actuellement utilisé par Google API JavaScript
edit5: dropbox nom de domaine a changé de "dl.dropboxusercontent.com'
Ajouté (Et je suis en utilisant dropbox/jsfiddle que les deux domaines)
Pour contourner le problème, où
window.top.location.href = window.top.location.href + "#hello"
n'est pas permis de l'iframe, la fenêtre parent pourrait passer dans sa propre url (urlencoded bien sûr) dans le cadre de la table de hachage du message qu'il envoie à l'enfant.OriginalL'auteur jpillora
Pour être en mesure de définir l'emplacement.de hachage, vous devez d'abord obtenir l'emplacement. La même origine politique interdit de l'emplacement.
OriginalL'auteur Quentin
Semble que cela est du à un bug dans Firefox, déposé dans Bugzilla, selon EricLaw.
OriginalL'auteur Peeja
Sont toutes les images contenant des endroits avec la même origine? (eg. même protocole, même domaine, même port). Si ils ne le sont pas c'est un problème de sécurité potentiel si une image peut modifier les autres (google de la même origine. Mais sans plus de détails, il est difficile de fournir une meilleure réponse.
OriginalL'auteur olliej
Je ne peux pas répondre pourquoi bits pour le hachage, mais avez-vous vu John Resig de travail avec
postMessage
? Vous rencontrez des problèmes avec FF3, FF3 se trouve être l'un des navigateurs qui prennent en chargepostMessage
, bingo 🙂À défaut, il y a le xssinterface de la bibliothèque. Semble être stable, mais je n'ai pas personnellement essayé.
OriginalL'auteur Dan F
Comme Alex l'a dit c'est un problème de sécurité. Vous ne pouvez pas accéder à la couche Supérieure si l'Intérieur est dans un domaine différent. Ceci est fait pour éviter Le Cross-site Scripting.
OriginalL'auteur Rui Carneiro