WKWebView的标题等于document.title?

时间:2016-11-28 01:59:41

标签: ios wkwebview

就像问题标题一样,我正在使用WKWebView,我想设置ViewController的标题。有两种方法:

方法一:

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;
    }];
}

他们是平等的吗?

1 个答案:

答案 0 :(得分:1)

不,据我所知,在didFinishNavigation网页内容已加载,但JS尚未解析并运行。因此,如果您在JS解析事件中对document.title进行了更改,则此时您之前的self.title是陈旧且不正确的。

evaluateJavascript内触发didFinishNavigation将请求排队,直到现有JS完成并运行。然后self.title在完成块中正确应用。

如果有帮助我特意在基于React的webView中看到这种差异(可能还有其他影响,为什么正确的标题被推迟到didFinishNavigation之后)。