Czy istnieje łatwy hak do wykrycia, że okno otwarte przez skrypt zakończyło ładowanie? Zasadniczo chcę odpowiednik haka onLoad()
, ale nie mogę ustawić go bezpośrednio - załóżmy, że dokument podrzędny jest podany i nie mogę faktycznie umieścić w nim żadnego własnego kodu.Oczekiwanie na załadowanie okna dziecięcego do końca
Załóżmy, że mam następujące dwa pliki:
parent.html
:
<html>
<head>
<title>Parent</title>
</head>
<script type="text/javascript">
var w;
function loadChild() {
w = window.open();
w.location.href="child.html";
// block until child has finished loading... how?
w.doSomething();
}
</script>
</html>
<body>
I am a parent window. <a href="javascript:loadChild()">Click me</a>.
</body>
child.html
:
<html>
<head>
<title>Child</title>
</head>
<script type="text/javascript">
function doSomething() {
alert("Hi there");
}
</script>
</html>
<body>
I am a child window
</body>
Ponieważ ustawienie location.href jest bez blokowania, w.doSomething()
ISN” t zdefiniowany jeszcze i wywołanie doSomething()
wysadzi w powietrze. Jak mogę wykryć, że dziecko zakończyło ładowanie?
Czy możesz wyjaśnić" ten sam pochodzenie "? Nie wydaje się działać z' file: /// 'URLs w moim polu lokalnym, ale może to jest rzeczą bezpieczeństwa? –
Tak, prawdopodobnie. samo pochodzenie oznacza po prostu, że cel musi znajdować się na tym samym _host_ i sa ja _protocol_. Czy mieszacie to z 'http: //', może? –
Zapomniałem dodać, że 'addEventLister' nie jest poprawnie obsługiwany w IE, więc używanie jQuery, jak sugeruje gabtub (lub innej struktury JS, która naprawia niezgodności przeglądarek do obsługi zdarzeń) jest prawdopodobnie dobrym pomysłem ... –