第一次在简书上写技术文章,因为自己发现这个问题在中文的资料里没有解决方案,所以在这儿给大家分享一下我的经验。
首先我的项目需求是使用easyJsWebview这个框架进行native 端和网页的一个交互,在其中一个环节需要reloading 网页 刷新以后进入一个新的域名,可是当刷新以后就会出现 breaking up,崩溃的情况,以及交互事件无法响应的情况。在这里 我的解决方式是将之前的 easyWebview 移除 并滞空重新创建easyWeb.
-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
if ([Global getGlobal].firstload) {
[easyWeb removeFromSuperview];
easyWeb = nil;
easyWeb = [[EasyJSWebView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height)];
[self.view addSubview:easyWeb];
easyWeb.backgroundColor = [UIColor lightGrayColor];
easyWeb.delegate = self;
JSCommonMethod *plugin = [JSCommonMethod new];
[easyWeb addJavascriptInterfaces:plugin WithName:@"CallPhone"];
[easyWeb loadRequest:request];
NSLog(@"重新刷新");
[Global getGlobal].firstload = false;
return NO;
}
同时我也是采取了stackoverflow 上同样的 方法,个人认为reloading 之后无法完成交互时间的原因在于 easyWeb 与Bridge 通信断开了链接,必须重新声明一个easyWeb 并注册 类方法。
如果有疑问可以与我一并探讨分享技术,QQ:335297434 EMAIL:hjtcsx@163.com
参考的stackOverflow 的地址 http://stackoverflow.com/questions/22714373/easyjswebview-breaks-when-reloading-the-webview