2012-05-29 16 views
9

Próbuję wywołać funkcję po pełnym załadowaniu mojej funkcji window.open.Funkcja wywołania JavaScript po window.open

Jednak użycie funkcji onload jest wywoływane zbyt wcześnie. Adres URL, który jest trafiony, otwiera arkusz kalkulacyjny Excel i może pobrać od 2 sekund do 1 minuty.

Funkcja onload jest wywoływana natychmiast po wywołaniu funkcji window.open. Muszę jednak wiedzieć, kiedy dokument Excel został otwarty - nie po trafieniu adresu URL.

Próbowałem ustawienie interwału ale to nie miano:

w = window.open(url,'_parent',false); 

w.onload = function(){ 
    console.log('here'); 
    setInterval(function(){ 
     alert('Hi'); 
    },10); 
+0

Dlaczego nie robić tego w oknie podrzędnym? A jeśli nie masz nic przeciwko udostępnieniu kodu, który otwiera plik Excela, byłoby wspaniale - ponieważ ładunek pliku Excel jest prawdziwym wyzwalaczem, którego potrzebujesz .. –

+0

czy chcesz tylko upewnić się, że plik Excela jest otwarty lub potrzebujesz dokładnie wiedzieć, kiedy jest otwarty? – zaw

+0

Mam siatkę extjs siedzi za tym, który musi wiedzieć, kiedy plik Excel został otwarty/okno ma w pełni załadowany dokument. Jest to skrypt CGI, który jest wywoływany, aby otworzyć plik Excela. – pm13

Odpowiedz

4

Pierwsza uwaga, że ​​aby to zrobić bez zablokowane z powodu ograniczeń między domenami (lub bez konieczności parametryzacji nagłówki Cors na Twój serwer), należy:

  • służyć zarówno swoją stronę główną i zawartości podręczne (plik Excel) z tej samej domeny, a sam port
  • otworzyć stronę główną w http:// i nie w file://

Jeśli są przestrzegane te warunki, najlepszym rozwiązaniem jest użycie jQuery jako jego load funkcyjnych czeka „aż wszystkie aktywa, takie jak obrazy zostały całkowicie otrzymał”:

<html> 
    <head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    </head> 
<body> 
<script> 
var popup = window.open('popup.html'); 
$(popup.document).load(function() { 
    alert('loaded'); 
    // do other things 
}); 
</script> 
</body> 
</html> 

Uważaj Twój globalny schemat: każda przeglądarka/konfiguracja może zrobić coś innego, gdy myślisz, że "otwiera" plik. Nie ma sposobu, aby wykryć za pomocą prostego open, jeśli zdecydowali się go odrzucić, nie mieli odpowiedniej wtyczki, po prostu go pobrali.

+0

Nie jestem pewien, czy nagłówki cors pozwalają ominąć pochodzenie okna. – user2284570