come accedere alla pagina principale di iFrame usando jquery?


Risposte:


489

Per trovare nel genitore dell'iFrame usare:

$('#parentPrice', window.parent.document).html();

Il secondo parametro per il wrapper $ () è il contesto in cui cercare. L'impostazione predefinita è documentare.


18
Fantastico - hai riconosciuto il ringraziamento prima che ti ringraziasse. StackOverflow sta avendo problemi con i fusi orari forse?
belugabob,

21
Puoi anche fare: $ (window.parent.document) .find ("# parentPrice"). Html ();
jhorback,

@belugabob È colpa di un Wizzard.
Erik Escobedo,

1
Per coloro che hanno lanciato un windoid con window.open, non dimenticare quel vecchio standard JS window.opener.document. $ ("# someDiv", window.opener.document) funziona.
giovedì

2
Funzionerà solo se l'origine dell'iframe ha caricato jQuery. Nella mia esperienza, l'origine iframe non avrebbe jQuery ma spesso è necessaria la necessità di chiamare una delle funzioni jQuery del genitore. Per fare questo usa: window.document. $ ("# ParentPrice"). Html () Questa è stata la risposta che Álvaro G. Vicario ha pubblicato.
David Kinkead,

39

come accedere alla pagina principale di iFrame usando jquery

window.parent.document.

jQuery è una libreria in cima a JavaScript, non una sostituzione completa per esso. Non è necessario sostituire ogni ultima espressione JavaScript con qualcosa che coinvolge $.


6
+1. jQuery è eccezionale, ma molte risposte a semplici problemi sembrano essere "usa jQuery". Se stai comunque caricando la libreria, va bene, ma non caricarla di una sola attività. Inoltre, le persone sembrano preoccupate per JS perf, quindi usano un'API su JS per fare le cose facilmente (e forse più velocemente) senza l'API.
Grant Wagner,

1
@Grant Anche se sogno che jQuery diventi codice nativo all'interno dei browser.
Dan soffia il

3
@Blowski: questo è il mio incubo! jQuery contiene un codice estremamente complesso e fragile "fai ciò che voglio dire" che sarebbe del tutto inappropriato da inserire in un'API ufficiale.
bobince,

1
@bobince: Chiaramente, dovresti sempre sostituire tutto Javascript con jQuery. È come pancetta; non esiste una situazione in cui meno è meglio. ;)
MW.

2
L'OP aveva già window.parent.document, quindi questo non ha risposto a nulla. E immagina che la logica del selettore sia molto più complessa dell'ID di un elemento, una situazione in cui jQuery è davvero utile. Sento che la domanda è "come posso dire 'ciao' in francese?" e questa risposta è "parla tedesco".
grantwparks,

13

Se è necessario trovare l'istanza jQuery nel documento principale (ad esempio, per chiamare una funzione di utilità fornita da un plug-in) utilizzare una di queste sintassi:

  • window.parent.$
  • window.parent.jQuery

Esempio:

window.parent.$.modal.close();

jQuery si attacca windowall'oggetto ed è quello che window.parentè.


Sto usando il mio iframe come un controllo utente. Questo mi permette di mantenerlo bello e pulito.
Dan Randolph,

11

Puoi accedere agli elementi della finestra principale da un iframe usando in window.parentquesto modo:

// using jquery    
window.parent.$("#element_id");

Che è lo stesso di:

// pure javascript
window.parent.document.getElementById("element_id");

E se hai più di un iframe nidificato e vuoi accedere all'iframe più in alto, puoi usare in window.topquesto modo:

// using jquery
window.top.$("#element_id");

Che è lo stesso di:

// pure javascript
window.top.document.getElementById("element_id");

7

nella finestra principale inserisci:

<script>
function ifDoneChildFrame(val)
{
   $('#parentPrice').html(val);
}
</script>

e nel file iframe src inserisci:

<script>window.parent.ifDoneChildFrame('Your value here');</script>

5

sì, funziona anche per me.

Nota: dobbiamo usare window.parent.document

    $("button", window.parent.document).click(function()
    {
        alert("Functionality defined by def");
    });

5

Funziona per me con una piccola svolta. Nel mio caso devo popolare il valore da POPUP JS al modulo PARENT WINDOW.

Quindi ho usato $('#ee_id',window.opener.document).val(eeID);

Eccellente!!!


3

Potrebbe essere un po 'tardi per il gioco qui, ma ho appena scoperto questo fantastico plugin jQuery https://github.com/mkdynamic/jquery-popupwindow . In pratica utilizza un evento di callback onUnload, quindi in pratica ascolta la chiusura della finestra figlio e eseguirà tutte le cose necessarie a quel punto. Quindi non c'è davvero bisogno di scrivere alcun JS nella finestra figlio per tornare al genitore.


1

Esistono diversi modi per farlo.

I) Ottieni direttamente il genitore principale.

per exa. Voglio sostituire la mia pagina figlio a iframe quindi

var link = '<%=Page.ResolveUrl("~/Home/SubscribeReport")%>';
top.location.replace(link);

qui top.location ottiene direttamente il genitore.

II) ottenere genitore uno per uno,

var element = $('.iframe:visible', window.parent.document);

qui se hai più di un iframe, quindi specifica uno attivo o visibile.

puoi anche fare così per ottenere altri genitori,

var masterParent = element.parent().parent().parent()

III) ottenere genitore dall'identificatore.

var myWindow = window.top.$("#Identifier")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.