iOS8,iOS9注入JS的时候报错如下

Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo=0x16e32ec0 {NSLocalizedDescription=A JavaScript exception occurred}
原因:
因为iOS10以下版本Webkit版本太低,所以在执行注入JS的时候,查询后得知JS方法中声明属性的用的let,但是在iOS10以下注入WKWebView的时候就会报错,所以为了兼容这个问题,在注入JS的时候系统版本为iOS10以下就要对JS方法中的属性声明替换为var。
解决方法:
方案一(注入JS做替换操作,不科学)
- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{
if (self.playFunc) {
NSLog(@"replacebefore - > %@",self.playFunc);
if (IOS10_Before) {
self.playFunc = [self.playFunc stringByReplacingOccurrencesOfString:@"let " withString:@"var "];
}
NSLog(@"replaceend - > %@",self.playFunc);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.wkWebView evaluateJavaScript:self.playFunc completionHandler:^(id _Nullable resp, NSError * _Nullable error) {
self.isIntoJs = !error;
if (error) {
NSLog(@"1注入失败:%@",error.description);
}else{
NSLog(@"2注入成功");
}
}];
});
}
}
-
修改前
-w975
-
修改后
-w1115
方案二
下发JS的时候处理,兼容老版本
网友评论