【问题标题】:How to resolve "Frame Load Interrupted" error in UIWebView?如何解决 UIWebView 中的“帧加载中断”错误?
【发布时间】:2013-11-11 21:03:39
【问题描述】:

在我签约构建的应用程序中,我正在提取 YouTube 视频列表并允许它们显示在应用程序中。但是,当用户在 YouTube 视图的导航控制器中点击单元格并出现带有 UIWebView 的模态视图时,UIWebView 会返回错误“帧加载中断”。

我已经通过调试器运行了几十次,在我初始化 NSURLRequest 之前一切似乎都很顺利。当显示模态视图时,下面是在 ViewController 的-viewDidLoad 方法中运行的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    _webView = [[UIWebView alloc] init];
    _webView.delegate = self;
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:_url];
    [_webView loadRequest:request];
}

但是,当我在[_webView loadRequest:request]; 行上调出调试器时,我看到以下内容:

有谁知道为什么 UIWebView 返回错误?

【问题讨论】:

  • 您可能需要检查 UIWebView 委托的 didFailWithError 并检查域和错误号,看看是否会产生更多信息
  • 这是一个空白页吗?
  • 关于重定向到 m.youtube 的最后一个答案似乎很有希望。我还发现了这个:stackoverflow.com/questions/19959307/…。如果文件是本地文件并且需要使用 UIWebView loadData 形成请求:
  • @amarkon 我有一个发往服务器的 POST 请求,它以 PDF 数据进行响应。扩展名为 .pdf 的文件名以 application/x-www-form-urlencoded 格式作为参数发送。我也收到 Error Domain=WebKitErrorDomain Code=102 “Frame load interrupted” 错误。如何解决?请帮忙。 TIA

标签: ios iphone objective-c uiwebview youtube


【解决方案1】:

您应该检查 URL 路径
应该是@"http://google.com" 而不是@“google.com”

【讨论】:

    【解决方案2】:

    我有同样的问题,在我的情况下,它原来是 MIMEType 设置不正确。

    我通过使用来自 URL 的请求手动创建 NSURLConnection 进行测试,然后实现:

    -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
    

    观察来自连接的响应回调。响应的MIMEType 原来是"pdf/pdf" 而不是"application/pdf,",一旦我解决了这个问题,webview 就很好地加载了 url。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      您使用的网址可能无法识别用户代理。这也是旧 iOS 版本中出现的问题,但似乎在 iOS 7 中又出现了。尝试将其添加到您的 appdelegate didFinishLaunchingWithOptions:

      NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3", @"UserAgent", nil];
      [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
      

      【讨论】:

      • 不走运,仍然收到“帧加载中断”消息。
      • 这解决了我在尝试加载 Facebook 时遇到的问题。对我来说,必要的部分是Mozilla/5.0 AppleWebKit/534.46
      【解决方案4】:

      使用https://www.google.comhttp://www.google.com

      其实https://是关键字。

      【讨论】:

        【解决方案5】:

        我在 iOS 10.2.1 UIWebView 上遇到了同样的问题。

        当请求带有路径 URL 的 pdf 文件时

        pdf 文件的 MIMEType 为“application/x-pdf”。

        所以我改成了“application/pdf”并且可以阅读这个

        【讨论】:

          【解决方案6】:

          Swift 5/WKWebview

          WKWEBVIEW 也会出现同样的问题,应该提供类似的解决方案作为 UIWebview: 就我而言,它是 PDF -

          webView.load(Data.init(contentsOf: url), mimeType:"application/pdf", characterEncodingName: "UTF-8", baseURL: url)

          这应该用于从网络加载 PDF 文件。

          【讨论】:

            【解决方案7】:

            显示帧加载中断错误的原因是www.youtube.com 正在执行重定向到m.youtube.com,这是UIWebView 不喜欢的。疯狂地推测,我会引用可能的安全隐患?我能够通过直接链接到移动网站来解决此问题,无需 youtube 进行重定向。

            【讨论】:

              【解决方案8】:

              对于那些报告添加或更正 mime 类型解决了问题的人,我遇到了类似的问题。就我而言,我试图打开一个没有文件扩展名的本地文件(例如“my-dir/my-file”),这导致了可怕的"Frame Load Interrupted" 错误(以及"Unbalanced calls to begin/end appearance transitions for UIViewController")。添加文件扩展名(例如“my-dir/my-file.pdf”)为我解决了问题。

              【讨论】:

                【解决方案9】:

                如果 webView 已经在加载过程中,请不要加载 webView

                if !self.webView.isLoading {
                    let request = URLRequest.init(url: url)
                    self.webView.load(request)
                }
                

                这样,我解决了这个问题。

                【讨论】:

                  【解决方案10】:

                  很清楚..您没有设置 WebView 的“框架”。 使用这个:

                  _webView = [[UIWebView alloc] initWithFrame:self.view.frame]; //give a proper Rect value
                  _webView.delegate = self;
                  NSURLRequest *request = [[NSURLRequest alloc] initWithURL:_url];
                  [_webView loadRequest:request];
                  

                  【讨论】:

                  • 不是那个意思。它是在谈论 web 框架(一个 WebKit 概念),而不是 UIView 框架。
                  猜你喜欢
                  • 2014-07-11
                  • 1970-01-01
                  • 2014-06-21
                  • 2010-12-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-03-30
                  • 2021-08-15
                  • 2020-02-07
                  相关资源
                  最近更新 更多