iOS-WKWebView跳转获取url标题title的两种方式

我们在做需求的时候,肯定避免不了跳转H5页面,多个页面需要获取web页面的标题title,这就牵扯出来两种方法:
1.我们常用的方法:WKWebView的代理方法:

  //执行JS方法获取导航栏标题
    [webView evaluateJavaScript:@"document.title" completionHandler:^(id _Nullable title, NSError * _Nullable error) {

        if (ValidStr(title)) {

            self.navigationItem.title = title;

        } else {

            self.navigationItem.title = @"";
        }

    }];

这种方法是最常用的,只要遵循代理就能实现。一般都可以获取到
2.在第一种方法获取不到title的时候,我们就暴力一点直接加KVO监听方法,用来获取webView的title,代码如下:

// 添加进度监听
[_wkWebView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:NULL];

#pragma mark KVO 实现方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    
    if ([keyPath isEqualToString:@"title"]) {
        
        if (object == self.wkWebView) {
            
            self.navigationItem.title = self.wkWebView.title;

        } else {
            
            [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
        }
    }
}

谢谢

你可能感兴趣的:(iOS-WKWebView跳转获取url标题title的两种方式)