iOS 加载h5 遇到的问题

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

        }

    };

猜你喜欢

转载自blog.csdn.net/qq_28469803/article/details/84870974