J'essaie d'accéder à l'objet de document d'une page qui vit dans un
5 Réponses :
Il existe de nombreuses façons de pouvoir accéder à iframe:
Par exemple, nous avons cette page HTML: P>
frames[0] == frames['my_frame_name'] == document.getElementById('my_frame_id').contentWindow // true
Merci pour la réponse, mais le
$('iframe').contents()[0]
Avez-vous attendu que l'iframe chargeait aussi?
Quoi qu'il en soit, le code suivant fonctionne dans la FF3.5, Chrome 3, IE6, IE7, IE8.
Démo hébergé: http://jsbin.com/amequ (modifiable via http://jsbin.com/amequ/edit ) p>
Je devais le faire dans un projet récent et j'ai utilisé ceci:
$("#container").append('<iframe src="http://domain.com" width="100%" border="0" frameborder="0" id="newIframe" style="border:none;overflow:hidden;"></iframe>'); $("#newIframe").load(function(){ var _this=$("this")[0]; $(this).css({ height: _this.contentWindow ? _this.contentWindow.document.body.scrollHeight + (20) : _this.contentDocument.body.scrollHeight + (20)}); }); //contentWindow.document.body is for IE //contentDocument.body is for everything else
Le + (20), si vous vous demandez, c'est parce que Safari décide de faire défiler des barres de défilement, même si le contenu d'un iframe ajuster les dimensions iFram exactement ... Le supplément 20px aide que je trouve ...
Vous pouvez nommer tout ce que vous voulez, il s'agit simplement d'une variable temporaire de contenir l'élément DOM afin de pouvoir être accessible ultérieurement en $ (). CSS ({})
Si cela fonctionne sur les navigateurs WebKit? Chrome définit toujours la hauteur de l'iframe à la hauteur du document parent. J'appelle $ (Ceci) .CSS ... dans le surcharge de l'iframe.
Si votre balise IFrame n'a aucun attribut SRC ni créé de manière dynamique avec JavaScript ou JQuery, vous pouvez utiliser ce code de code pour vous reporter au document d'Iframe et manipuler à l'aide de JQuery:
$myFrameDocument.html ( '<!doctype html><html><head></head><body></body></html>' );