Diciamo che avere una funzione alert2 globale:È possibile chiamare un metodo Javascript nel contesto di un'altra finestra?
function alert2(msg) {
window.alert(msg);
}
e hai anche un riferimento a un secondo oggetto finestra:
childWindow = window.open(myUrl);
Ora che si desidera chiamare alert2 dalla finestra nel contesto della childWindow :
alert2.call(childWindow, "does not work without this.window");
la finestra di dialogo viene visualizzata nella finestra principale perché "finestra" all'interno della alert2 è legato alla finestra in cui questo metodo è stato definire d (la finestra genitore).
Una soluzione è quella di modificare alert2:
function alert2(msg) {
this.alert(msg);
}
E 'possibile farlo senza questa modifica? Qualcosa del genere:
alert2.call(childWindow.parent, "no such thing as window.parent");
Questo è un esempio forzato; childWindow.alert ("") non è quello che sto cercando!
La mia fonte può essere visto e modificato in jsfiddle partendo http://jsfiddle.net/hJ7uw/2/
Grazie ... il codice di illustrare la mia comprensione del problema. In questo caso non c'è modo di sostituire il significato di "figlio" o "genitore" in func() sopra. Allo stesso modo sembra che non ci sia modo di sostituire il significato di "finestra" in una funzione perché "finestra" è stata catturata quando alert2 è stato creato proprio quando "genitore" e "figlio" vengono catturati quando func è definita. –