2009-09-20 21 views
22

Ho una pagina Web in cui è presente un'area di testo all'interno di un iframe. Ho bisogno di leggere il valore di questa textarea dalla sua pagina figlio usando JavaScript.Accesso agli elementi iframe in JavaScript

Attualmente utilizzando window.parent.getelementbyID().value nel JavaScript, sono in grado di recuperare i valori di tutti i controlli nella pagina padre tranne la textarea all'interno dell'iframe.

Qualcuno può darmi qualche suggerimento per risolvere questo problema?

+0

Qualcuno può aiutarmi per favore con la logica? –

+0

possibile duplicato di [Come posso accedere agli elementi iFrame con Javascript?] (Http://stackoverflow.com/questions/1452871/how-can-i-access-iframe-elements-with-javascript) – Mark

+0

Utilizzare 'window.frames ['myIFrame']. contentDocument.getElementById ('myIFrameElemId') 'che funziona nei browser moderni (ad es. Firefox 35) - e fai attenzione alla politica della stessa origine – caw

risposta

43

Se l'iframe si trova nello stesso dominio della pagina principale, è possibile accedere agli elementi utilizzando la raccolta 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') 

Se l'iframe non si trova nello stesso dominio, il browser deve impedire tale accesso per motivi di sicurezza.

+1

Grazie mille per i tuoi suggerimenti. Ma il problema è che l'ID frame n nome frame nella mia pagina padre cambia in runtime, quindi non possiamo usare il nome frame/frame per riferimento. Esiste un altro modo in cui Ra Yell? .. –

+0

La pagina madre genitore/figlio si trova nello stesso dominio. –

+0

Se c'è una sola iframe sul tuo sito puoi provare a usare 'document, frames [0] .document'. Se ce ne sono altri, è necessario modificare l'indice con un altro valore. – RaYell

14

Si dovrebbe accedere fotogrammi da window e non document

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

questa risposta non funziona per me ... –

13

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

non funziona per me, ma ho trovato un'altra soluzione. Uso:

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

Ho controllato su Firefox e Chrome.

+1

Continuo a colpire un errore di sicurezza anche se le pagine web sono entrambe offline. – TheBrenny

2

questo codice ha funzionato per me:

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

Assicurarsi che l'iframe è già caricato. Vecchio ma affidabile modo senza 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> 
Problemi correlati