2010-10-18 8 views
5

Zastanawiałem się, jaki jest najlepszy sposób, aby wykryć, kiedy strona się zakończyła, gdzie dana strona jest w innej karcie lub oknie, ... i gdzie strona do załadowania może być dowolną stroną w Internecie i nie jest pod moją kontrolą.Javascript, aby wykryć, kiedy strona została załadowana do innego okna w Firefox

Używam tylko przeglądarki Firefox i nie mam nic przeciwko temu, czy to rozwiązanie wymaga rozszerzenia przeglądarki Firefox lub Grease Monkey (dodałem już konfigurację/polecenia, aby umożliwić dostęp do stron z różnych domen).

Poniższy kod przedstawia próbę. Czasami wykrywa, kiedy strona początkowa została załadowana, ale kiedy naciśnie "Prześlij", aby ponownie załadować nową stronę do innego okna, nie wykrywa tego.

Dzięki.

<html> 
<head> 
<script type="text/javascript"> 

    currentPageObj = window.open("http://www.bbc.co.uk", "currentPage"); 

    currentPageObj.addEventListener("load", function(){alert("loaded")}, false); 

</script> 
</head> 
<body> 

    <form action="http://www.example.com" target="currentPage"> 
     <input type="submit"> 
    </form> 

</body> 
</html> 
+0

Czy dwie strony pochodzą z tej samej domeny? – Robusto

+0

Nie może to być żadna strona internetowa – spiderplant0

Odpowiedz

1

W drugiej stronie po prostu moduł obsługi zdarzeń onload który wywołuje metodę w oknie nadrzędnym (window.opener), aby robić to, co chcesz. na przykład na stronie dziecka:

window.addEventListener('load', function() { 
    if (window.opener && !window.opener.closed) { 
    window.opener.childLoaded(); 
    } 
}, false); 

i mają childLoad robić to, co chcesz w oknie nadrzędnym. (Uwaga: najlepiej będzie zachować odniesienie do okna, z którym chcesz się zmierzyć, np. Inicjować var parentWindow = window;, ponieważ podczas połączenia między oknami może to być mylące.)

+0

Dzięki andrewmu, ale zapomniałem wspomnieć, że w drugim oknie ładuję stronę z innej domeny, nad którą nie mam kontroli i dlatego nie mogę edytować tej strony. – spiderplant0

+0

Ok .. to jest trudne. Dopóki nie wykonasz jakiegoś sprytnego proxy przez twój serwer i wstawisz odpowiednią odpowiedź na stronę w drodze powrotnej. Na przykład. umieść powyższy fragment w tagu skryptu, który wstawi przed odpowiedzią odpowiedź, zanim wyślesz ją do przeglądarki. – andrewmu

Powiązane problemy