2016-11-28 36 views
0

就像問題標題一樣,我使用的是WKWebView,我想爲ViewController設置標題。有兩種方法:WKWebView的標題等於document.title?

方法一:

self.title = webview.title 

方法2:

- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation { 

    [webView evaluateJavaScript:@"document.title" 
       completionHandler:^(id _Nullable ss, NSError * _Nullable error) 
    { 
     self.title = ss; 
    }]; 
} 

他們是平等的嗎?

+0

根據文檔yes,'webview.title'爲您提供頁面標題。 – manman

回答

1

不,據我所知,在didFinishNavigation點的網頁內容已經加載,但JS沒有解析和運行。因此,如果您在JS解析事件中對document.title進行了更改,則此時您的以前的self.title已過時並且不正確。

觸發evaluateJavascriptdidFinishNavigation之內隊列請求,直到現有的JS完成並運行後。然後self.title正確應用在完成塊內。

如果有幫助,我特意在基於React的webView中看到這種差異(可能有其他暗示,爲什麼正確的標題被延遲到didFinishNavigation之後)。