2009-09-20 11 views
22

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 à partir de sa page enfant en utilisant JavaScript.Accéder aux éléments iframe en JavaScript

Actuellement en utilisant window.parent.getelementbyID().value dans le JavaScript, je suis en mesure d'aller chercher les valeurs de tous les contrôles dans la page parente à l'exception de la zone de texte dans l'iframe.

Quelqu'un peut-il me donner des pointeurs pour résoudre ce problème?

+0

Quelqu'un peut-il m'aider s'il vous plaît avec la logique? –

+0

duplicata possible de [Comment puis-je accéder aux éléments iFrame avec Javascript?] (Http://stackoverflow.com/questions/1452871/how-can-i-access-iframe-elements-with-javascript) – Mark

+0

Utiliser 'window.frames ['myIFrame']. contentDocument.getElementById ('myIFrameElemId') 'qui fonctionne dans les navigateurs modernes (par exemple Firefox 35) - et prêter attention à la politique de même origine – caw

Répondre

43

Si votre iframe est dans le même domaine que votre page parente, vous pouvez accéder aux éléments en utilisant la collection document.frames.

// 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 ne se trouve pas dans le même domaine, le navigateur doit empêcher cet accès pour des raisons de sécurité.

+1

Merci beaucoup pour vos suggestions. Mais le problème est que le nom d'image frame n n dans ma page parente change en runtime, donc nous ne pouvons pas utiliser le nom d'image/frame pour référence. Existe-t-il un autre moyen Ra Yell? .. –

+0

Les pages parent et enfant sont dans le même domaine. –

+0

S'il n'y a qu'un iframe sur votre site, vous pouvez essayer d'utiliser 'document, frames [0] .document'. S'il y en a plus, vous devez changer l'index pour une autre valeur. – RaYell

14

Vous devez accéder à des cadres de window et non document

window.frames['myIFrame'].document.getElementById('myIFrameElemId') 
+2

cette réponse Ne fonctionne pas pour moi ... –

13

window.frames['myIFrame'].document.getElementById('myIFrameElemId')

ne fonctionne pas pour moi, mais je l'ai trouvé une autre solution. Utilisation:

window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId') 

Je l'ai vérifié sur Firefox et Chrome.

+1

Je continue à frapper une erreur de sécurité, même si les pages Web sont hors ligne. – TheBrenny

2

ce code a fonctionné pour moi:

window.frames['myIFrame'].contentDocument.getElementById('myIFrameElemId'); 
1

Assurez-vous que votre iframe est déjà chargé. 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> 
Questions connexes