有一個可以正常運行的UIWebView
。delegates也運行正常,在打開URL時,事件 shouldStartLoadWithRequest 和 webViewDidFinishLoad 都會激活。
但是在打開google 搜索結果時,只有**shouldStartLoadWithRequest**激活。webViewDidFinishLoad
則無法調用。
造成原因是,因為如果我在shouldStartLoadWithRequest
放一個‘加載’指示器,在頁面正確加載之後,指示器還是繼續運行。
這有什麼好的解決方法麼?
google使用的ajax,在一個有效的新資源加載到webView中才會調用webViewDidFinishLoad delegates方法。相當於一個頁面加載在浏覽器裡,由於google使用的ajax,所以不能引起方法的觸發。
沒有方法能檢測是否部分頁面被加載了(javascript,樣式表,或者ajax響應)。
你可以做的事是檢測webView的javascript判斷頁面的高度,根據頁面高度的變換可以判斷哪些完成。你還可以想一些其他的方法來檢測哪些搜索查詢發生變化了,不過我的方法可以用於google初始頁面的結果。
每幾秒檢測一次JS就可以了。