Comment exposer l'IFrame DOM à l'aide de jQuery?
J'ai un prototype représentant un particual IFrame. Ce prototype ont une fonction appelée GoToUrl(...) que s'ouvre l'url donnée dans l'IFrame.
Ma question est: Comment puis-je créer un "InternalDOM" de la propriété et de faire de cette propriété, reportez-vous à la "fenêtre" de l'objet (la racine de l'objet DOM) de l'IFrame à l'intérieur? De telle façon que: Si mon IFrame expose une page qui a un objet X dans la fenêtre "objet" que je pouvais faire:
MyFrameObject.GoToUrl(pageXurl);
MyFrameObject.InternalDOM.X
Toute aide serait appréciée.
PS: j'accepte les réponses ne sont pas nécessairement liées à jQuery, mais je préfère un jQuery solution.
Vous devez vous connecter pour publier un commentaire.
Pour obtenir le
window
objet pour une image vous pouvez utiliser l'window.frames
tableau:Cela nécessite que vous donner la
<iframe>
un de la vieille écolename
attribut au lieu de ou en tant que bien que laid
. Sinon, si vous savez l'ordre de l'iframe sur la page, vous pouvez indice numérique:Il est généralement plus souple pour obtenir la fenêtre iframe à partir de l'élément iframe dans les DOM, mais cela nécessite une certaine compatibilité de code à composer avec IE:
jQuery définit la contenu() méthode pour saisir le
document
nœud, mais il ne vous donne pas une manière de croix-navigateur pour aller de ladocument
à lawindow
, de sorte que vous êtes toujours coincé avec:qui n'est pas vraiment une grande victoire.
(Remarque: faites très attention en utilisant jQuery pour la croix-cadre de programmation. Chaque image a besoin de sa propre copie de jQuery et des méthodes à partir d'une image de la copie ne fonctionnera pas nécessairement sur les nœuds de l'autre. La croix-cadre de programmation est un sujet semé de pièges.)
$('#iframe-id').get(0).contentWindow
Pour résumer
Accès iframe contenu de la page parent
Accéder à la page parent contenu de l'iframe
Cela s'applique uniquement lorsque le parent et l'iframe pages sont sur le même domaine.
EDIT: en charge de l'enfant iframes exemple:
parent html
parent js
Tous les principaux navigateurs, y compris IE9 travail avec le
on('load')
lignes. Seulement IE8/7 besoin de l'intervalle de bloc.Mise à JOUR @RoyiNamir 's commentaire:
pour la fenêtre dans un iframe.
pour le document dans une iframe
pour le corps dans une iframe
pour le corps dans une iframe avec jquery
IMPORTANT:
vous devriez toujours vérifier que le document est avec le statut "terminé" pour travailler avec ce
window.document.frames
ne fonctionne plus, au moins pas dans Firefox et Chrome. L'édition de votre message.