Mozzila ma Kod próbny do użycia nsIWebBrowserPersist saveURI, aby pobrać pliki z rozszerzenia Firefoksa.

Jednak nie mówi, jak monitorować, jeśli pobieranie zatrzymuje się i musi zostać ponownie uruchomiony ponownie.

Czy jest jakiś sposób, aby sprawdzić, czy pobieranie zatrzymuje się i ponownie uruchom ponownie pobieranie? Jeśli nie mogę tego zrobić za pomocą nsIWebBrowserPersist, czy mogę używać czegoś innego?

0
Tianyang Li 23 listopad 2013, 02:35

2 odpowiedzi

Najlepsza odpowiedź

Musisz wdrożyć i nsIWebProgressListener i .progressListener.

Twój słuchacz musi implementować wszystkie metody nsIWebProgressListener, ale możesz po prostu stuknąć większość z nich. Ważny (dla tego pytania) jest onStateChange, gdzie możesz sprawdzić wynik błędów, który wskazuje błędy sieciowe, a także stany dokumentacji, sprawdź również, że serwer powracający błąd HTTP:

Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
var mylistener = {
  QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIWebProgressListener]),
  ...
  onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus) {
    if (!(aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_STOP)) {
      // not yet done.
    }
    aWebProgress.progressListener = null; // reset to avoid circular references -> leaks
    if (!Components.isSuccessCode(aStatus)) {
      // Some network or file related error happened.
    }
    if (aRequest instanceof Components.interfaces.nsIHttpChannel && aRequest.responseStatus >= 400) {
      // Some http related error happened.
    }
  }
}; 
1
nmaier 24 listopad 2013, 12:41

Downloads.jsm obsługuje wznowienie pobrania. Ustaw trytokeeppartialdata na swojej Pliki do pobrania.

1
Jason Barnabe 24 listopad 2013, 06:50