następujące prace dla mnie w Chrome, Firefox, IE (nie testowałem więcej przeglądarek)
zakładamy 3 dokumenty
- (www.mydomain.com/parent.html) strona, która zawiera dokument „main' z linkiem
- (bills.mydomain.com/child.html) strony, która zostanie otwarta przez link
- (www.mydomain.com/dispatcher.html) wyjaśnione później
najpierw ustawić domeny-własność wszystkich 3 dokumentach mydomain.com
<script>
document.domain="mydomain.com";
</script>
w Parent.html stworzenia ukryty element iframe z właściwością name np "ukryta ramka". Utwórz także funkcję, która może później otrzymać odpowiedź.
Parent.html powinna teraz wyglądać następująco:
<script>
document.domain="mydomain.com";
function fx(msg)//receives the response
{
alert(msg)
}
</script>
<iframe name="hiddenframe" style="display:none"></iframe>
<a href="http://bills.mydomain.com/child.html" target="_blank">click</a>
W Child.html będziesz teraz w stanie załadować dokument do ukrytego iframe wewnątrz Parent.html
<script>
document.domain="mydomain.com";
window.open('http://www.mydomain.com/dispatcher.html','hiddenframe');
</script>
(nie mylić w obliczu korzystania z window.open()
tutaj, nie otworzy się nowe okno, strona zostanie załadowana do elementu iframe w parent.html)
W dispatcher.html możesz teraz wywołać funkcję wewnątrz rodzica.html
<script>
document.domain="mydomain.com";
parent.fx('you just got some response');
</script>
Kiedy tylko trzeba przeładować Parent.html to jest trochę łatwiej.
ponownie ustawić document.domain-Nieruchomości w Parent.html i Child.html (nie trzeba iframe w Parent.html i dispatcher.html)
W Parent.html ustawić także nazwa-właściwości okna, np
<script>
window.name="parentTab";
</script>
W Child.html teraz może otworzyć (TAB) parentTab
-window
<script>
document.domain="mydomain.com";
window.open('http://www.mydomain.com/parent.html','parentTab');
</script>
... lub po prostu użyć "parentTarget" jako docelową-własność linku lub w postaci dziecka. html
Wierzę, że 'window.open' powinien zwrócić nowy obiekt _Window_ i jeśli nie masz problemów z tą samą zasadą pochodzenia, możesz dołączyć detektora z obiektu nadrzędnego do tego obiektu lub ustawić interwał, który sprawdza pewną zmienną. –
@PaulS., To window.open nie otwiera się w nowej karcie. – Alon
@Alon Działa w Firefoksie. –