按錯了。。。,原帖地址http://blog.csdn.net/cyforce/article/details/37657009web
webkit使用WKWebView來代替IOS的UIWebView和OSX的WebView,而且使用Nitro JavaScript引擎,這意味着全部第三方瀏覽器運行JavaScript將會跟safari同樣快。
第1、WKWebView增長的屬性和方法
類比UIWebView,跟UIWebView的API對比,
增長的屬性:
一、estimatedProgress 加載進度條,在IOS8以前咱們是經過一個假的進度條來實現
二、backForwardList 表示historyList
三、WKWebViewConfiguration *configuration; 初始化webview的配置
增長的方法:
一、- (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration
初始化
三、(WKNavigation *)goToBackForwardListItem:(WKBackForwardListItem *)item;
跳到歷史的某個頁面
第2、相同的屬性和方法
goBack、goForward、canGoBack、canGoForward、stopLoading、loadRequest、scrollView
第3、被刪去的屬性和方法:
一、- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
在跟js交互時,咱們使用這個API,目前WKWebView完檔沒有給出實現相似功能的API
二、沒法設置緩存
在UIWebView,使用NSURLCache緩存,經過setSharedURLCache能夠設置成咱們本身的緩存,但WKWebView不支持NSURLCache
第4、delegate方法的不一樣
UIWebView支持的代理是UIWebViewDelegate,WKWebView支持的代理是WKNavigationDelegate和WKUIDelegate
WKNavigationDelegate主要實現了涉及到導航跳轉方面的回調方法
WKUIDelegate主要實現了涉及到界面顯示的回調方法:如WKWebView的改變和js相關內容
具體來講WKNavigationDelegate除了有開始加載、加載成功、加載失敗的API外,還具備額外的三個代理方法:
一、- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation
這個代理是服務器redirect時調用
二、- (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瀏覽器