WebKit => [webView mainFrameDocument] == ​​ноль (иногда) - PullRequest
1 голос
/ 16 июня 2011

Я попробовал этот метод после загрузки страницы. Но иногда mainFrameDocument в webView пуст (ноль). Это не зависит от URL вообще! [webView mainFrameURL] не всегда равен нулю.

en.wikipedia.org => нет проблем

heise.de => 80% времени (не страницы!) MainFrameDocument == nil ...

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame {

    if (frame == [self mainFrame]) {

        if ([self mainFrameDocument] == nil) NSLog(@"mainFrameDocument with URL = %@ is nil!", [self mainFrameURL]);
    }
}

2011-06-16 00: 31: 28.763 WebAppforMac [32025: 707] mainFrameDocument с URL = http://www.heise.de/ равен нулю!

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Звучит как состояние гонки.

http://en.wikipedia.org/ и http://heise.de/ оба отправляют 301 переадресацию назад, но делают это немного по-разному. Ответ Wikipedia имеет пустое тело, в то время как heise.de отправляет обратно короткий HTML-документ с 301. Это всего лишь предположение, но может случиться так, что WebView загружает первый документ, затем вызывает метод слушателя, затем (в другой поток) пытается загрузить страницу, на которую перенаправляется. Так что, если перенаправление не будет выполнено достаточно быстро, иногда вы получите нулевой основной кадр.

0 голосов
/ 16 июня 2011

Спасибо !!!

Итак, я понял: я должен использовать:

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame {

    if (frame == [self mainFrame]) {

        if ([**frame document**] == nil) NSLog(@"mainFrameDocument with URL = %@ is nil!", [self mainFrameURL]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...