在 iPhone 上打开 .webarchive?

发布于 2024-07-07 21:42:32 字数 222 浏览 9 评论 0原文

有谁知道是否可以在 iPhone 上以编程方式打开 .webarchive? .webarchive 是 Safari 将网页及其关联资源打包到单个文件中的方式。

我尝试创建一个并浏览到移动Safari中的一个链接,但它不起作用......

注意:我有点希望这可以在没有第3方应用程序的情况下完成,因为这将是一种很好的方式打包一个 WebApp 以在 iPhone 上使用,无需第三方工具。

Does anyone know if you can programmatically open a .webarchive on the iPhone? A .webarchive is Safari's way of packaging up a webpage and it's associated resources into a single file.

I tried creating one and browsing to a link to one in mobile safari, but it didn't work....

Note: I was kind of hoping this could be done without a 3rd party app, as it'd be a nice way to package up a WebApp for use on the iphone without needing a third party tool.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

无声无音无过去 2024-07-14 21:42:33

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

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

AirSharing on the iPhone will open webarchive files, but I've no idea if they are doing it all themselves or using native webarchive support.

See http://www.avatron.com/products/

灼疼热情 2024-07-14 21:42:32

iOS 支持 webarchive。 只需将其加载到 UIWebView 上即可。 它就是有效的!

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

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

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

webview 是您的 UIWebview

webarchive is supported on iOS. Just load it on UIWebView. It just works!

for loading a webarchive on your bundle, just do

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

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

webview is your UIWebview

陈甜 2024-07-14 21:42:32

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

a .webarchive is just a plist; theoretically, you could read it using NSPropertyListSerialization and then build a local file structure on the phone, then pump that into a UIWebView. Or use AirSharing.

请你别敷衍 2024-07-14 21:42:32

稍微扩展一下上面的建议,如果您只想获取 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";

}

Expanding a little on suggestions above, if you just want to grab the HTML, the following code snippet may be a good starting point. By inspecting the webMainResource dictionary you can extract other material too, such as images.

#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";

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文