在Safari中打开“data:xxx”URL

时间:2014-02-10 09:08:04

标签: ios mobile-safari

我无法在iOS / Safari中打开数据网址。

NSString* stringUrl = @"data:text/html;base64,PGh0bWw+DQo8Ym9keT4NCjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiPg0KZG9jdW1lbnQubG9jYXRpb249J2h0dHA6Ly93d3cuZ29vZ2xlLmNvbSc7DQo8L3NjcmlwdD4NCjwvYm9keT4NCjwvaHRtbD4=";
NSURL* url = [NSURL URLWithString:stringUrl];
NSLog(@"Got url: %@", url);
const BOOL STATUS = [UIApplication.sharedApplication openURL:url];
NSLog(@"STATUS: %d", STATUS);

这应该是在iOS设备上打开Safari。结果页面将是:

<html>
<body>
<script language="JavaScript">
document.location='http://www.google.com';
</script>
</body>
</html>

然而,openURL失败,STATUS返回NO / 0。我们如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以使用UIApplication的特殊方法来确定它是否可以打开您的网址

BOOL STATUS = [UIApplication.sharedApplication canOpenURL :url];

但是,文档中没有提及UIApplication是否能够使用“数据”方案打开URL:

“UIKit支持许多方案,包括http,https,tel,facetime和mailto方案。” - 来自UIApplication的文档。

您可以尝试在内部UIWebView浏览器中打开此URL,并查看UIWebView的这种方法:

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL;