7

有谁知道您是否可以在 iPhone 上以编程方式打开 .webarchive?.webarchive 是 Safari 将网页和相关资源打包成单个文件的方式。

我尝试在移动 safari 中创建一个并浏览到一个链接,但它没有用....

注意:我有点希望这可以在没有 3rd 方应用程序的情况下完成,因为它是打包 WebApp 以在 iphone 上使用而不需要第三方工具的好方法。

4

4 回答 4

16

iOS 支持 webarchive。只需将其加载到 UIWebView 上。它只是工作!

要在您的捆绑包上加载网络存档,只需执行

NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"myFile"
     withExtension:@"webarchive"];

[webView loadRequest:[NSURLRequest requestWithURL:fileURL]];

webview 是你的 UIWebview

于 2011-02-10T01:05:47.840 回答
4

.webarchive 只是一个 plist;理论上,您可以使用 NSPropertyListSerialization 读取它,然后在手机上构建本地文件结构,然后将其泵入 UIWebView。或者使用 AirSharing。

于 2008-10-22T13:37:03.570 回答
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";

}
于 2011-07-05T22:50:10.920 回答
0

iPhone 上的 AirSharing 将打开 webarchive 文件,但我不知道他们是自己做这一切还是使用本地 webarchive 支持。

请参阅http://www.avatron.com/products/

于 2008-10-22T13:28:56.877 回答