有人知道你是否可以在iPhone上以编程方式打开.webarchive? .webarchive是Safari打包网页的方式,它将相关资源整合到一个文件中。
我尝试创建一个并浏览到移动版Safari中的链接,但它没有用....
注意:我有点希望没有第三方应用程序可以完成这项工作,因为它是一种很好的方法来打包WebApp以便在iphone上使用而无需第三方工具。
答案 0 :(得分:16)
iOS支持webarchive。只需在UIWebView上加载它。它只是有效!
在您的捆绑包上加载webarchive,只需执行
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"myFile"
withExtension:@"webarchive"];
[webView loadRequest:[NSURLRequest requestWithURL:fileURL]];
webview是您的UIWebview
答案 1 :(得分:4)
a .webarchive只是一个plist;理论上,您可以使用NSPropertyListSerialization读取它,然后在手机上构建本地文件结构,然后将其泵入UIWebView。或者使用AirSharing。
答案 2 :(得分:3)
根据上面的建议进行一些扩展,如果你只是想抓取HTML,下面的代码片段可能是一个很好的起点。通过检查webMainResource字典,您也可以提取其他材料,例如图像。
#define WEB_ARCHIVE @"Apple Web Archive pasteboard type"
- (NSString*) htmlStringFromPasteboard;
{
NSData* archiveData = [[UIPasteboard generalPasteboard] valueForPasteboardType:WEB_ARCHIVE];
if (archiveData)
{
NSError* error = nil;
id webArchive = [NSPropertyListSerialization propertyListWithData:archiveData options:NSPropertyListImmutable format:NULL error:&error];
if (error)
{
return [NSString stringWithFormat:@"Error: '%@'", [error localizedDescription]];
}
NSDictionary* webMainResource = [webArchive objectForKey:@"WebMainResource"];
NSData * webResourceData = [webMainResource objectForKey:@"WebResourceData"];
NSString* string = [[NSString alloc] initWithData:webResourceData encoding:NSUTF8StringEncoding];
return [string autorelease];
}
return @"No WebArchive data on the pasteboard just now";
}
答案 3 :(得分:0)