Ios 第59列第2行出现错误:SystemLiteral";或';预期
当我打算使用内置web视图引擎打开一些网页时,我的iOS应用程序中出现了这样的错误(基于Safari,但Safari工作正常): 此页面包含以下错误:第59列第2行错误: 预期为“SystemLiteral”或“SystemLiteral”。下面是到的页面呈现 第一个错误 (未呈现任何内容)。 有趣的是,这些网站可以在iPhone版的my app上打开,但不能在iPad上打开。 查看互联网,我发现数十万个网站无法被谷歌机器人处理——当我在谷歌搜索时: “59:SystemLiteral”或“预期” 它列出了搜索结果,但所有找到的网站的描述都显示了我的错误。但是,当我打开其中任何一个时,它们在桌面浏览器和iOS Safari上的渲染效果都很好。 有人知道这可能是什么原因吗?通过谷歌搜索打开的网站中没有一个可以在iPad上的“我的应用”中呈现——所有这些都显示了相同的错误 我还尝试使用Mac的Safari开发者模式调试它,但它没有给出任何提示 更新:我准备了一个最小的项目,添加了UIWebView控制器,它显示了相同的错误。 ViewController.h:Ios 第59列第2行出现错误:SystemLiteral";或';预期,ios,ipad,mobile-safari,Ios,Ipad,Mobile Safari,当我打算使用内置web视图引擎打开一些网页时,我的iOS应用程序中出现了这样的错误(基于Safari,但Safari工作正常): 此页面包含以下错误:第59列第2行错误: 预期为“SystemLiteral”或“SystemLiteral”。下面是到的页面呈现 第一个错误 (未呈现任何内容)。 有趣的是,这些网站可以在iPhone版的my app上打开,但不能在iPad上打开。 查看互联网,我发现数十万个网站无法被谷歌机器人处理——当我在谷歌搜索时: “59:SystemLiteral”或“预期
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@end
我还尝试了一些带有此代码的网页(全部来自我上面提到的谷歌搜索),它们也显示了不同的错误,如“第9列第1077行错误:打开和编辑标记不匹配:元行0和头。”-这来自,但仍然无法呈现。查看该网站的响应,在回答的开头有一个空白行,这似乎有点奇怪。在我的第一次尝试中,我删除了空白:
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *fullURL = @"http://catalog.llc.lib.ms.us/polaris/";
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
if (!data) {
NSLog(@"%s: sendAsynchronousRequest error: %@", __PRETTY_FUNCTION__, connectionError);
return;
}
NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
html = [html stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
[_webView loadHTMLString:html baseURL:url];
}];
}
但我后来注意到,您不必修剪空白,而仅仅使用loadHTMLString
似乎就足够了
我不清楚为什么Safari会像iPhone网络视图一样正确地处理这个问题,而不是iPad网络视图。但这似乎解决了问题。罗布,谢谢你的提示,但就我而言,这是另一回事。我在使用一些测试网页分析浏览器和服务器之间的通信时发现了突破。
我将详细解释:
问题与用户代理和mime类型有关。 我的应用程序在用户代理字符串中包含“Mobile/[somenumber]Safari Version/[someversionnumber]”等内容。一些服务器对用户代理中的内容要求非常严格,基于Mobile Safari的浏览器需要一些Safari webkit版本,因此正确的标记应该是“Mobile/[somenumber]Safari/[someverionnumber]Version”/[someversionnumber]“ "Mobile/[somenumber] Safari Version/[someversionnumber]" "Mobile/[somenumber] Safari/[someverionnumber] Version/[someversionnumber]" 符号影响服务器的行为-它发送不同的mime类型(内容类型)。对于我在qestion中提到的网站,当用户代理不正确时,“内容类型”由服务器设置为“应用程序/xhtml+xml”,但当正确时,它是“文本/html”,呈现时没有任何问题。在这两种情况下发送的html代码完全相同。
无论如何,对于我来说,仍然很难说这是不是服务器站点的故障,这让发送“application/xhtml+xml”移动设备或webkit的内容类型,无论如何都应该处理此类代码或非常严格的用户代理符号。问题是什么?任何网页都会给出相同的错误,但代码的第一行是错误编号,通常是…或similar@Rob我不确定这是否是编程问题,如果这是ap则是个问题p网站方面的问题或错误代码。我想知道为什么谷歌在搜索引擎中处理得不好。我在iPhone和iPad上使用相同的代码,我的应用程序太大了,无法显示代码。@Rob我问是否有人遇到过这样的问题,或者可能会给出一些提示。从我所看到的情况来看,完全相同的fou数量是一个很常见的问题nd错误。我将尝试准备一些简单的应用程序,但我想这不是线索。编辑得好,@Hiero。我正在研究它。 "Mobile/[somenumber] Safari/[someverionnumber] Version/[someversionnumber]"