/ / wykonywanie kodu po rozpoczęciu pobierania - javascript, jquery

uruchamianie kodu po rozpoczęciu pobierania - javascript, jquery

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 № 1

Moż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ść.