WKWebView崩溃iOS9
Posted
技术标签:
【中文标题】WKWebView崩溃iOS9【英文标题】:WKWebView crash iOS9 【发布时间】:2016-07-06 20:54:39 【问题描述】:我的模拟器上的 WKWebView 出现未知错误。一个朋友用他的 Iphone 也一样。 当我从 Web 服务器加载页面时,我尝试单击页面内的按钮,但 webView 崩溃并且我在屏幕上看到一个空白页面。这不是 javascript 问题。
我发现了类似的问题,但没有解决方案。 (有些人提到了 CGRectMake 或 32/64 位兼容性...)
我的代码在这里:
- (void) webView:(WKWebView *)webView didFailLoadWithError:(NSError *)error url:(NSString *)url
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc]
init];
WKUserContentController* userController = [[WKUserContentController alloc]init];
[userController addScriptMessageHandler: self name:@"musique"];
[userController addScriptMessageHandler: self name:@"upload"];
configuration.userContentController = userController;
self.webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height-20) configuration:configuration];
[self.view addSubview:self.webView];
NSLog(@"ici web");
// Setup WKUserContentController instance for injecting user script
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
提前致谢
【问题讨论】:
你可能会导致 JS 死锁,或者一些递归调用填满堆栈——因为我和我的朋友在我们的手机上没有经历过这样的事情。 【参考方案1】:问题是再次执行函数addScriptMessageHandler
引起的,你应该把你的follow代码放在函数viewDidLoad
中:
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc]
init];
WKUserContentController* userController = [[WKUserContentController alloc]init];
[userController addScriptMessageHandler: self name:@"musique"];
[userController addScriptMessageHandler: self name:@"upload"];
configuration.userContentController = userController;
self.webView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height-20) configuration:configuration];
[self.view addSubview:self.webView];
NSLog(@"ici web");
// Setup WKUserContentController instance for injecting user script
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
【讨论】:
我的意思是,当WKWebView加载网站时,函数- (void) webView:(WKWebView *)webView didFailLoadWithError:(NSError *)error url:(NSString *)url
可能会被执行两次。以上是关于WKWebView崩溃iOS9的主要内容,如果未能解决你的问题,请参考以下文章