UIWebview调用window.close()白屏或者app闪退如何解决?

在app内打开网页,用UIWebview打开一个链接:1.在浏览器中打开时一切正常;
2.在UIWebview打开该链接时,点击A网页上的链接可以跳转到新的B页面,但是在B点击“撤回”时webview先是白屏一会接着就闪退了。
请问如何在uiwebview中实现类似浏览器的操作呢?
解答:
问题的核心有两个:
1.uiwebview不响应jS的window.close方法,解决办法是hack该方法,重写,代码如下(记得添加自己的处理方法,不然webview呈现空白的内容)

- (void)webViewDidFinishLoad:(UIWebView *)webView
{ 
    NSString *swizzleCloseWindowJS =
      @"var script = document.createElement('script');"
      "script.type = 'text/javascript';"
      "script.text = \"window.close = function windowOnClose() { "
    "javascript:window.location='hackCloseWindowFrame://'"
     "}\";"
     "document.getElementsByTagName('head')[0].appendChild(script);";
    [webView stringByEvaluatingJavaScriptFromString:swizzleCloseWindowJS];
}
{
    DDLogInfo(@"absolute url :%@",request.URL.absoluteString);
    DDLogInfo(@"url scheme :%@",request.URL.scheme);
    if ([request.URL.scheme isEqualToString:[@"hackCloseWindowFrame" lowercaseString]]) {
      // 添加自己的处理方法
      return NO;
    }
  return YES;
}

2.UIWebview加载错误,错误代码-999,这种错误通过查询其原因是:在前一个NSURLRequest还没有加载完成时开始加载新的NSURLRequest,一般的处理办法是检测到此类错误,在一下方法中添加自己的处理:

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
 

以上的解决办法个人觉得不算好的,只是暂时能解决问题,欢饮大牛给出更优的办法。

闪退的话就是崩溃了啊,在syslog里找原因啊

1、是否必现?
2、什么设备,什么系统,是否越狱?
3、Safari,UC,QQ 浏览器是否崩溃?

1.闪退偶尔才有,一般是白屏,前进后退操作正常
2.iOS6、7,是否越狱都一样
3.浏览器正常

初步断定是uiwebview不能响应window.close方法,正在测试解决办法