Say masz globalnej funkcji alert2:Możliwe wywołanie metody Javascript w kontekście innego okna?
function alert2(msg) {
window.alert(msg);
}
I masz również odniesienie do drugiego obiektu window:
childWindow = window.open(myUrl);
Teraz chcesz zadzwonić alert2 z okna w kontekście childWindow :
alert2.call(childWindow, "does not work without this.window");
pojawi się okno dialogowe, w głównym oknie, bo „okna” wewnątrz alert2 jest zobowiązany do okna, w którym metoda ta była definiować d (okno nadrzędne).
Jednym z rozwiązań jest zmiana alert2:
function alert2(msg) {
this.alert(msg);
}
Czy można to zrobić bez tej modyfikacji? Coś w tym stylu:
alert2.call(childWindow.parent, "no such thing as window.parent");
To jest wymyślny przykład; childWindow.alert ("") nie jest tym, czego szukam!
Moje źródło można zobaczyć i zmodyfikowano jsfiddle zaczynając http://jsfiddle.net/hJ7uw/2/
Dzięki ... kod ilustrują moje rozumienie problemu. W tym przypadku nie ma możliwości zastąpienia znaczenia "child" lub "parent" w func() powyżej. Podobnie wydaje się, że nie ma sposobu na zastąpienie znaczenia "okna" w funkcji, ponieważ "okno" zostało przechwycone, gdy alert2 został utworzony, tak jak "rodzic" i "dziecko" jest przechwytywane, gdy zdefiniowano func. –