2015-07-09 4 views
0

У меня есть UIWebView, я хочу сделать некоторые операции после загрузки содержимого WebView, поэтому я установил UIWebViewDelegate, послушаю метод webViewDidFinishLoad:, пожелайте, когда WebView загрузится, и я могу получить уведомление.можно расширить UIWebViewDelegate, чтобы делегат мог быть уведомлен, когда document.ready, а не window.onload

В качестве URL-адреса, который я запрашиваю, есть несколько изображений и много тегов img, я обнаружил, что метод WebViewDeveloperFidishLoad WebView вызывается очень медленно.

в документе Apple, он сказал

webViewDidFinishLoad: 
Sent after a web view finishes loading a frame. 

Это не объяснить, что «завершения загрузки кадра» на самом деле is.So я попытался изменить свой сайт, и добавил некоторые JS код в нем, а затем использовать Чарльз добавить некоторые конфигурации Дросселирования, так что мои изображения могут быть нагрузка очень очень slow.Here Это код:

$(document).ready(function() { 
    alert('ready'); 
}); 
window.onload = function() { 
    alert('load'); 
}; 

готового предупреждение показывает очень быстро, но тревога нагрузки показывает только после того, как мои изображений было полностью загружены, то метод метода делегата webviewDidFinishLoad: был вызван.

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

Итак, есть ли способы, которыми я могу знать событие document.ready раньше, чем UIWebviewDelegate сообщает мне, что весь контент загружен?

ответ

0

Вы можете уведомить свой собственный код из $ (document) .ready().

В JS вы:

$(document).ready(function(){ 
     window.location.href = "native:docReady"; 
}); 

В OC вы должны реализовать протокол UIWebViewDelegate и реализовать метод ниже:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    if ([[[request URL] absoluteString] isEqualToString: @"native:docReady") { 
      // do whatever you want. 
    } 
} 

Надеется, что это помогает и не слишком поздно.