2009-03-20 18 views
17

Mam stronę internetową (wykonaną przy użyciu JSF), w której niektóre łącza pozwalają użytkownikowi uzyskać plik PDF.wykrywanie kiedy wyskakujące okno "Pobieranie pliku" jest zamknięte

Gdy użytkownik kliknie na taki link, pojawi się okno oczekiwania (jest to panel modalny) (ponieważ generowanie pliku PDF może być długie), a po utworzeniu pliku program IE wyświetli komunikat "Pobieranie pliku" "popup, który proponuje opcje" Otwórz "," Zapisz "i" Anuluj ".

Czy istnieje sposób w języku Javascript, aby wiedzieć na mojej stronie internetowej, gdy to okno podręczne jest zamknięte, tj. Kiedy użytkownik zapisał (lub otworzył) plik PDF?

Aby być nieco bardziej precyzyjnym, na stronie internetowej wyświetlającej link do pliku PDF wyświetlane jest modalne okno podręczne ("okienko oczekiwania"), aby użytkownik czekał na wyskakujące okno "Pobieranie pliku" . Problem polega na tym, że gdy użytkownik zapisuje (lub otwiera) plik PDF, okno "Pobieranie pliku" zamyka się, ale użytkownik następnie "wraca" do pierwotnej strony internetowej, a okienko oczekiwania wciąż się wyświetla.

Zauważ, że moja aplikacja działa tylko w IE6, więc nie jestem na IE (6) rozwiązania -Tylko ...

mam też żadnego problemu z rozwiązań, które wymagają jQuery;)

Edycja: Jeśli istnieje rozwiązanie, które wychwyci każde zdarzenie uruchamiane dokładnie w momencie wyświetlenia okna "Pobieranie pliku" dla użytkownika (tj. Zanim użytkownik wybierze opcję Zapisz, Otwórz lub Anuluj), będzie ono również dobre dla mnie!

Odpowiedz

1

Jestem pewien, że odpowiedź brzmi nie, chyba, że ​​warto rozważyć jakąś ActiveX plugin do przeglądarki (w tym przypadku odpowiedź może być jeszcze nie ...)

10

Zdarzenie nie istnieje. Aby rozwiązać ten problem, musisz zastosować inne podejście.

  1. cel pobieranie Link do ukrytego iframe z nazwą (target="myhiddeniframe")
  2. na kliknięcie łącza pobierania, pokaż swoją loading spinner
  3. ustawić atrybut iframe onload do wywołania zwrotnego, który ukrywa spinner

efekt netto: ty „Spin”, natomiast pDF jest generowany, a „unspin”, gdy pojawi się okno „pobieranie pliku” (w przeciwieństwie do kiedy „pobieranie pliku” dialog jest zamknięte).

+0

Dokładnie tego, czego szukałem. Miałem już modalne okno dialogowe z ramką iframe, ale próbowałem powiązać zdarzenie z załadowaniem dokumentu strony ładującej w elemencie iframe ... to nie działało. Twoje rozwiązanie działa. Dzięki! – alanquillin

+6

Brzmiało to dobrze, ale w moim przypadku zdarzenie ładowania elementu iframe nie jest uruchamiane, prawdopodobnie dlatego, że wyzwala tylko wtedy, gdy zawartość jest w formacie HTML. – bluish

+1

@ bluish: plain ol '