Bien que votre src = encodeURI
devrait fonctionner, j'aurais pris un autre chemin :
var iframe = document.createElement('iframe');
var html = '<body>Foo</body>';
document.body.appendChild(iframe);
iframe.contentWindow.document.open();
iframe.contentWindow.document.write(html);
iframe.contentWindow.document.close();
Comme il n'y a pas de contraintes liées au domaine x et que tout se fait par l'intermédiaire de la fonction iframe
vous pourrez accéder au contenu du cadre et le manipuler par la suite. Tout ce dont vous devez vous assurer, c'est que le contenu a été rendu, ce qui (selon le type de navigateur) commencera pendant/après l'émission de la commande .write. mais Il n'est pas nécessaire de le faire lorsque close()
s'appelle.
Une manière 100% compatible de faire un callback pourrait être cette approche :
<html><body onload="parent.myCallbackFunc(this.window)"></body></html>
Iframes a l'événement onload, cependant. Voici une approche pour accéder au html interne comme DOM (js) :
iframe.onload = function() {
var div=iframe.contentWindow.document.getElementById('mydiv');
};
10 votes
Notez que HTML5 a introduit un nouveau paramètre qui fait cela automatiquement : w3schools.com/tags/att_iframe_srcdoc.asp Le seul problème est la compatibilité des navigateurs...
0 votes
Duplicata possible de mettre du html dans un iframe (en utilisant javascript)