iOS8 WebKit庫之——WKWebView篇

iOS8 WebKit庫之——WKWebView篇


webkit使用WKWebView來代替IOS的UIWebView和OSX的WebView,並且使用Nitro JavaScript引擎,這意味着所有第三方瀏覽器運行JavaScript將會跟safari一樣快。
第一、WKWebView增加的屬性和方法
類比UIWebView,跟UIWebView的API對比,
增加的屬性:
1、estimatedProgress 加載進度條,在IOS8之前我們是通過一個假的進度條來實現
2、backForwardList 表示historyList
3、WKWebViewConfiguration *configuration; 初始化webview的配置
增加的方法:
1、- (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration 
初始化
3、(WKNavigation *)goToBackForwardListItem:(WKBackForwardListItem *)item; 
跳到歷史的某個頁面
第二、相同的屬性和方法
goBack、goForward、canGoBack、canGoForward、stopLoading、loadRequest、scrollView
第三、被刪去的屬性和方法:
1、- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
在跟js交互時,我們使用這個API,目前WKWebView完檔沒有給出實現類似功能的API
2、無法設置緩存
在UIWebView,使用NSURLCache緩存,通過setSharedURLCache可以設置成我們自己的緩存,但WKWebView不支持NSURLCache
第四、delegate方法的不同
UIWebView支持的代理是UIWebViewDelegate,WKWebView支持的代理是WKNavigationDelegate和WKUIDelegate
WKNavigationDelegate主要實現了涉及到導航跳轉方面的回調方法
WKUIDelegate主要實現了涉及到界面顯示的回調方法:如WKWebView的改變和js相關內容
具體來說WKNavigationDelegate除了有開始加載、加載成功、加載失敗的API外,還具有額外的三個代理方法:
1、- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation
這個代理是服務器redirect時調用
2、- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler
這個代理方法表示當客戶端收到服務器的響應頭,根據response相關信息,可以決定這次跳轉是否可以繼續進行。
3.- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
根據webView、navigationAction相關信息決定這次跳轉是否可以繼續進行,這些信息包含HTTP發送請求,如頭部包含User-Agent,Accept
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章