J'ai une page Web où il y a une zone de texte dans un iframe. J'ai besoin de lire la valeur de cette zone de texte depuis sa page enfant en utilisant JavaScript.
Actuellement, en utilisant window.parent.getelementbyID().value
dans le JavaScript, je suis capable de récupérer les valeurs de tous les contrôles de la page parent, à l'exception de la zone de texte dans l'iframe.
Quelqu'un peut-il me donner des conseils pour résoudre ce problème?
Si votre iframe appartient au même domaine que votre page parent, vous pouvez accéder aux éléments à l'aide de document.frames
collection.
// replace myIFrame with your iFrame id
// replace myIFrameElemId with your iFrame's element id
// you can work on document.frames['myIFrame'].document like you are working on
// normal document object in JS
window.frames['myIFrame'].document.getElementById('myIFrameElemId')
Si votre iframe n'est pas dans le même domaine, le navigateur doit empêcher cet accès pour des raisons de sécurité.
Vous devez accéder aux cadres depuis window
et non document
window.frames['myIFrame'].document.getElementById('myIFrameElemId')
window.frames['myIFrame'].document.getElementById('myIFrameElemId')
ne fonctionne pas pour moi mais j'ai trouvé une autre solution. Utilisation:
window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId')
Je l'ai vérifié sur Firefox et Chrome.
Assurez-vous que votre iframe est déjà chargé. Moyen ancien mais fiable sans jQuery:
<iframe src="samedomain.com/page.htm" id="iframe" onload="access()"></iframe>
<script>
function access() {
var iframe = document.getElementById("iframe");
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
console.log(innerDoc.body);
}
</script>
ce code a fonctionné pour moi:
window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId');
Deux façons
window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId')
OR
window.frames['myIFrame'].contentWindow.document.getElementById('myIFrameElemId')