iOS在加载UIWebView时会遇到取title的问题
一般我们都是用
NSString *title = [webView stringByEvaluatingJavaScriptFromString:@
"document.title"
];
正常没什么问题。但是主要看前端页面是怎么写的
假设需要加载前端界面为A界面,title为AAA。点击A界面调到B界面,title应该为BBB,但是你发现title仍然为AAA。那么问题就来了。
造成这个问题的原因就是因为前端用的异步写的,所以当你跳转到B界面时NSString *title = [webView stringByEvaluatingJavaScriptFromString:@
"document.title"
]; 还是上一界面的title
解决办法用延时操作(标准不是特别严格的时候)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(
1
* NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
self.title = [webView stringByEvaluatingJavaScriptFromString:@
"document.title"
];
});
时间1可以按照自己需要设置。
如果标准特别严 要求体验必须好
那就需要和前端商量,用JS桥 来处理,简单写一下iOS代码
context[@
"setWebViewTitle"
] = ^(){
NSArray *args = [JSContext currentArguments];
if
(args.count == 1) {
// 设置标题,只需要传递一个参数
self.title = [args firstObject];
}
};