2009-09-14 27 views
12

Tôi đang cố chuyển đổi giữa tải các trang web khác nhau bằng cách ẩn webView trong khi đang tải trang. Tuy nhiên, tôi thấy rằng một số trang web chuyên sâu hình ảnh đang khiến webViewDidFinishLoading kích hoạt quá sớm và khi tôi hiển thị webView tại thời điểm đó, sau đó trong một giây, bạn sẽ thấy được trang trước đó. Bất kỳ ý tưởng về cách giải quyết này?webViewDidFinishLoad: Kích hoạt quá sớm?

+1

Đã gặp phải vấn đề này. Javascript không thực sự sẵn sàng khi sự kiện đã được kích hoạt:/ – Danra

+0

Tôi cũng đang đấu tranh với điều này và nghi ngờ rằng mặc dù tất cả nội dung có thể đã được tải, trang có thể chưa được hiển thị. Vì vậy, bạn sẽ thấy trang cũ trong một giây. Trong trường hợp của tôi, không có Javascript nhưng tấn và tấn CSS và một tải trọng lớn của HMTL. – brainjam

Trả lời

4

Nếu có Javascript trên trang, bạn có thể cần đợi cho đến khi hoàn thành. Cách đơn giản nhất có vẻ là để gửi một số javascript để trang để được thực thi:

-(void) webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString *javaScript = @"<script type=\"text/javascript\">function myFunction(){return 1+1;}</script>"; 
    [webView stringByEvaluatingJavaScriptFromString:javaScript]; 

    // done here 
} 

Có nói rằng, tôi dường như vẫn thấy trường hợp webview là không hoàn toàn được cập nhật trong vòng webViewDidFinishLoad.

3

Tôi cũng gặp sự cố này. Mặc dù tôi đã không tìm thấy một giải pháp, tôi đã làm việc xung quanh vấn đề bằng cách giới thiệu một sự chậm trễ 0,5 giây trước khi hiển thị UIWebView khi phương thức ủy nhiệm webViewDidFinishLoading được gọi.

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    [self performSelector:@selector(displayWebView) withObject:nil afterDelay:0.5]; 
} 
+5

Có thể hoạt động, nhưng không phải rất sạch sẽ ... – Julien

+0

Thật tệ khi dựa vào thời gian ở đây – nielsbot

Các vấn đề liên quan