Chciałbym dodać animowany obraz modułu ładującego,które pojawi się, gdy użytkownik uruchomi pobieranie załącznika, i zniknie po jego faktycznym rozpoczęciu - kiedy przeglądarka rozpocznie pobieranie pliku (lub wyświetli okno dialogowe potwierdzenia pobierania). Powodem jest to, że załączniki są dość złożonymi dokumentami generowanymi po stronie serwera, co zajmuje trochę czasu, a animowany moduł ładujący zapewniłby użytkownika, że strona działa (i wyłączał przycisk pobierania do momentu rozpoczęcia pobierania).
Załącznik prawidłowo ustawił nagłówki HTTP.
Oto jak teraz wygląda:
var link = $("#download-link");
link.click(function () {
link.displayLoader();
$(document).load(link.attr("href"), function () {
link.hideLoader();
});
return false;
});
Głównym problemem jest to, że load
metoda oczywiście nie robi tego, co chciałbym osiągnąć. Czy istnieje sposób na uchwycenie faktycznego początku pobierania, wywołanego przez window.location
zmiana?
Odpowiedzi:
1 dla odpowiedzi № 1Możesz to zrobić.
Wyłącz cały ekran, dopóki pobieranie nie będzie gotowe (przetwarzanie po stronie serwera).
A użytkownik klika przycisk pobierania, a użytkownik bezpośrednio pobiera plik.
Podejścia, po których następuje większość strony pobierania. na przykład. Mediafire.com
PS: Wyłącz cały ekran oznacza okno dialogowe typu systemu. wyłączanie innych opcji.
0 dla odpowiedzi nr 2
Dlaczego najpierw nie wyświetlasz obrazu modułu ładującego?
Jeśli teraz rozumiem poprawnie, problem polega na tym, że chcesz, aby obraz modułu ładującego zniknął, gdy plik zacznie się pobierać, a obecnie znika po zakończeniu pobierania pliku?
Nie sądzę, że istnieje prosty sposób, aby to zrobić za pomocą jQuery, ale jeśli przejdziesz do korzystania z normalnego JavaScript XMLHttpRequest
obiekt bezpośrednio, otrzymasz kilka oddzwonień na różnych etapach pobierania, do których można uzyskać dostęp za pośrednictwem readyState
własność.