如何解决 UIWebView 中的“帧加载中断”错误?
Posted
技术标签:
【中文标题】如何解决 UIWebView 中的“帧加载中断”错误?【英文标题】:How to resolve "Frame Load Interrupted" error in 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 的最后一个答案似乎很有希望。我还发现了这个:***.com/questions/19959307/…。如果文件是本地文件并且需要使用 UIWebView loadData 形成请求: @amarkon 我有一个发往服务器的 POST 请求,它以 PDF 数据进行响应。扩展名为 .pdf 的文件名以 application/x-www-form-urlencoded 格式作为参数发送。我也收到 Error Domain=WebKitErrorDomain Code=102 “Frame load interrupted” 错误。如何解决?请帮忙。 TIA 【参考方案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.com 或http://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 框架。以上是关于如何解决 UIWebView 中的“帧加载中断”错误?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 9.2.1 获取 webView:didFailLoadWithError - 102:Phonegap 中的帧加载中断
iPhone 上的 Phonegap 应用程序触发“帧加载中断”错误