как индикатор загрузки загружается в Firefox, когда в заголовках отсутствует длина содержимого - PullRequest
2 голосов
/ 24 мая 2011

Я хочу знать, как работает индикатор выполнения загрузки веб-страницы в FF, когда в заголовках http нет длины содержимого.Я проверил на google.com, он не отправляет заголовок длины контента, но индикатор выполнения работает правильно.Это настоящий индикатор прогресса или фальшивый?Если это подделка, то как мне создать похожий.

Я создаю приложение для iPhone, где мне нужно создать аналогичный индикатор загрузки.

Обновление 1

@ Robot Woods - я только что произвел поиск "привет" в Google и вижу индикатор выполнения внизу ... сейчас я нахожусь наWindows 7 и FF 3.6.13

enter image description here

Вот заголовки ответов, которые я получаю -

enter image description here

И я неt видеть любой заголовок длины содержимого ...

Как FF может генерировать индикатор выполнения, если длина содержимого отсутствует .. ??

Ответы [ 2 ]

2 голосов
/ 30 мая 2011

Я не знаю, что делает Firefox, но если бы это был я, я бы посмотрел на следующее:

Начальная страница обычно загружается довольно быстро. Начните синтаксический анализ, пока он еще входит, и начните захватывать другие ресурсы (css, js, images и т. Д.), Которые требует страница.

Используйте индикатор выполнения, чтобы показать, сколько времени займут вспомогательные файлы, и оцените страницу на основе пессимистического среднего значения других файлов того типа, которые вы загружали ранее.

То, что многие программы делают со своим индикатором выполнения, когда у него нет информации, - это предоставление индикатора выполнения, который замедляется по мере приближения к концу. Он никогда не достигает конца, но продолжает двигаться, пока продолжают поступать данные.

0 голосов
/ 28 мая 2011

а что вы хотите загрузить?Является ли FF просто примером индикатора выполнения здесь?

Если вы хотите подключиться к сети с помощью NSURLConnection и показать, что она загружается, вы можете просто сделать это с объектом UIProgressView.Помните, что я пропустил вашу обработку данных и только что написал событие прогресса.

//NSURLConnection Delegate Methods

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{

    //length is a long long declared outside
    length =  [response expectedContentLength];

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

    NSNumber * recieved = [NSNumber numberWithUnsignedInteger:[data length]];
    NSNumber * total = [NSNumber numberWithLongLong:length];
    float ratio = [recieved floatValue] / [toplam floatValue];
    [[YourUIProgressView progressBar] setProgress:ratio];

}

Удачи.

...