Est-ce que quelqu'un connaît des solutions de contournement à créer un IE Ne semble pas permettre l'accès aux iframes vides / dynamiques après la propriété Par exemple, imaginez que vous créez de manière dynamique une iframe, puis injectant du code HTML dans: p> Voici un exemple en direct sur Jsfiddle: http://jsfiddle.net/xhkut/ p> Vous remarquerez qu'il fonctionne bien en FF / Webkit, mais pas ie. C'est particulièrement frustrant car cela affecte les iframes créés après em> la propriété La règle IE semble être "Si vous créez une iframe dynamique / vide après avoir changé à propos de: vide code> iframe sur une page dans IE lorsque le document
.domain code> a changé?
document.domain code> a été modifiée. p>
document.domain code> a changé (comme dans l'exemple ci-dessus). P>
document.domain code>, vous ne pouvez pas accéder à son DOM." P> < p> définir l'iframe
src code> à
à propos de: vide code>
JavaScript: void (0) code> ou
JavaScript: "" code> a été infructueux. p> p>
3 Réponses :
J'ai toujours travaillé autour de problèmes comme celui-ci en définissant le SRC de l'iframe à un fichier vierge qui vit sur le même domaine que le domaine du parent. S'il est possible de créer un tel fichier sur où jshell.net code>, je recommanderais quelque chose comme:
blank.html code> contient simplement Un peu de chaudière, par exemple: p>
Malheureusement, il n'y a pas d'écriture d'écriture au domaine que le script est hébergé (le code JavaScript lui-même est un widget qui doit fonctionner partout).
Si l'iframe.src et le document.Location sont sur différents domaines (ou sous-domaines) que vous avez par définition ne disposez pas d'accès du parent à l'enfant. Cependant, vous avez accès à l'enfant au parent. L'une des techniques utilisées lors du chargement croisé JavaScript utilise le fait que l'IFrame peut appeler une méthode dans la fenêtre du conteneur lorsqu'elle est chargée. P>
Seulement si les deux documents sont sur différents sous-domaines, vous pouvez modifier le document.Domain pour correspondre au domaine de l'IFrame.src pour activer l'accès. P>
En savoir plus sur la même politique d'origine ici: P>
http://en.wikipedia.org/wiki/same_origin_policy p>
http://softwareas.com/cross-domain-communication-vith-iframes < / a> p>
Êtes-vous heureux de changer le domaine de l'iframe? Les travaux suivants (pour moi) dans IE7,9
document.domain = 'jshell.net'; var iframe = document.createElement('iframe'); document.body.appendChild(iframe); iframe.src = "javascript:document.write('<script>document.domain=\"jshell.net\"</script>')"; // Now write some content to the iframe iframe.contentWindow.document.write('<html><body><p>Hello world</p></body></html>');
Cela fonctionne, merci. Il semble également fonctionner bien en FF / WebKit. Vous aurez besoin de séparer les balises
Le protocole à propos de: i> peut être limité en fonction des paramètres / Version IE: msdn.microsoft.com/en-us/library/ee330729 (v = vs.85) .aspx (voir" À propos de la restriction de protocole "chapitre)
Remarque: ce bogue semble être corrigé dans IE11.