2010-04-12 16 views
15

Come è possibile che uno script all'interno di un abbia qualche nozione della pagina che lo contiene? Uno script nella cornice può accedere a qualsiasi contesto al di fuori di esso? Che mi dici del cross-domain?iframe che accede al DOM padre?

Fino ad ora credevo che un sia completamente agnostico alla pagina contenente, ma ho visto un esempio che contraddice questa convinzione.

Che cosa si può e non si può fare esattamente all'interno di uno rispetto alla pagina contenente?

risposta

31

se il contenuto dell'iframe e del relativo genitore hanno lo stesso dominio, è possibile accedere alla pagina padre dall'iframe utilizzando parent.document.getElement... - ma non è possibile eseguire questo dominio incrociato.

+15

appena per riferimento, 'top' è il documento top,' self' è il documento corrente e 'parent' è il documento sopra quello attuale. – cryo

+0

Impara qualcosa di nuovo ogni giorno :) –

+0

@oezi, ho un documento che carica iframe da un dominio diverso. Sono stato in grado di manipolare gli attributi iframe all'interno del documento caricato in quell'iframe. Ho usato parent.document.getElementById() per ottenere l'elemento e quindi aggiungere un attributo usando $ (ele) .attr ('width', '100%'); Non ho idea del perché ha funzionato per me. Fammi sapere se vuoi conoscere le specifiche del mio ambiente per avere un'idea migliore di questo problema. Grazie – Rishabh

4

In genere, non è possibile comunicare tra i due DOM attraverso i domini. Tuttavia, esiste un modo per passare i messaggi tra i due utilizzando la parte hash dell'URL dell'iframe. Per iframe nello stesso dominio, vedi oezi's answer.

This might be of some help e ci sono un sacco di altre domande sull'argomento qui.

+0

articolo interessante, strano che respinga il postmessage di html5 come non avendo ancora abbastanza supporto come safari, chrome, firefox, opera e anche MSIE8 lo supportano. con il plugin jquery postmessage (che utilizza alcune delle tecniche utilizzate nell'articolo che colleghi) diventa completamente cross-browser. – futtta

+0

Penso che sia comprensibile - è stato scritto nel marzo 2008 :) Il plugin jQuery sembra molto interessante. –

Problemi correlati