2013-06-13 12 views
8

Ho un calendario e quando faccio clic su un <td>, viene visualizzata una finestra popup in cui è possibile creare il tuo evento per la data selezionata. Voglio aggiungere una funzionalità.Chiamare JavaScript della finestra padre dalla finestra figlio

Quando l'utente termina la creazione dell'evento, desidero inviare una richiesta JavaScript alla pagina padre in modo da poter aggiornare il calendario utilizzando AJAX. Fondamentalmente, voglio chiamare una funzione dal bambino, ma la funzione è nella pagina padre.

Su Google, ho trovato solo uno script che può aggiornare la finestra padre - niente su un "richiamo genitore". ☹ È persino possibile?

P.S. La risposta può essere pura JS o jQuery, non importa. Continuerò a cercare nel frattempo.

+0

@Neal David ha detto di cercare su Google cose come "richiami dei genitori", che penso, se la sua ricerca è approfondita, è una quantità ragionevole di sforzo. Si noti che, per quanto posso dire, David non sta chiedendo il codice completo per aggiornare e visualizzare un calendario. Sta solo chiedendo un modo generale per una finestra pop-up per chiamare una funzione nella sua finestra genitore. –

+0

Questa è una domanda molto valida che è stata lanciata molto, non so perché sia ​​stata downvoted. Posso immaginare che nelle prossime versioni dei browser vedremo javascript in grado di interagire con la piattaforma di finestre su un livello più approfondito. – OneChillDude

+0

Grazie a entrambi per aver difeso questa domanda. Sto solo chiedendo un "how-to" ma non ho bisogno di codice ... E sì, ho fatto delle ricerche e tutto quello che ho trovato è come si fa a ridefinire la finestra genitore. Non ho trovato nulla. Ora spero che in futuro questa domanda possa essere la ricerca top in Google e aiutare più persone nei bisogni. –

risposta

13

Quello che stai cercando è un riferimento allo window che ha aperto la finestra popup. Una volta che hai questo, puoi chiamare le funzioni in quella finestra, leggere e scrivere variabili in quella finestra, o persino manipolarne il DOM.

Tale riferimento è denominato opener. Ti dà l'oggetto window per la finestra che ha aperto la finestra corrente. Ad esempio, se si dispone di una funzione nella finestra originale come questo:

function updateMe(data) { 
    alert(data); 
} 

quindi nella finestra pop-up che si potrebbe chiamare in questo modo:

opener.updateMe('Hello!'); 

Naturalmente, è necessario fare in modo che updateMe() è una funzione globale nella pagina originale. Oppure se hai qualche oggetto nella pagina originale e updateMe() è un metodo di quell'oggetto, puoi ancora farlo, purché l'oggetto sia globale. per esempio. nella pagina host:

var myObject = { 
    updateMe: function(data) { 
     alert(data); 
    } 
}; 

poi nel pop-up che si poteva fare:

opener.myObject.updateMe('Hello!'); 

In sostanza, fino a quando si potrebbe ottenere per l'oggetto o la funzione nella pagina originale con window.whatever, poi nel popup puoi semplicemente cambiarlo in opener.whatever.

+1

MDN's [documentazione per 'window.opener'] (https://developer.mozilla.org/en-US/docs/Web/API/window.opener) –

+0

Grazie. Da quello che vedo, questo è quello che stavo cercando. Lo proverò domani al lavoro! –

+0

Funziona come un fascino! Grazie mille, ho imparato qualcosa oggi! –

Problemi correlati