【问题标题】:Open a .webarchive on the iphone?在 iPhone 上打开 .webarchive?
【发布时间】:2008-10-22 13:23:16
【问题描述】:

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

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

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

【问题讨论】:

    标签: iphone safari webarchive


    【解决方案1】:

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

    要在您的捆绑包中加载网络存档,只需这样做

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

    webview 是你的 UIWebview

    【讨论】:

    • 并非总是如此。你知道哪个版本的 iOS 添加了对此的支持吗?
    • 它对我不起作用 - 我只得到一个白色的 uiwebview。 (iOS 5.0.1)
    • 您是如何创建网络存档的?只需在 safari 上加载页面并将其保存为 webarchive。自 iOS 3.x 以来一直为我工作
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      稍微扩展一下上面的建议,如果你只是想抓取 HTML,下面的代码 sn -p 可能是一个很好的起点。通过检查 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";
      
      }
      

      【讨论】:

        【解决方案4】:

        iPhone 上的 AirSharing 会打开 webarchive 文件,但我不知道他们是自己做的还是使用原生 webarchive 支持。

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

        【讨论】:

        • 注意:我有点希望它可以在没有第三方应用程序的情况下完成,因为它是为 WebApp 打包 HTML+Javascript 的好方法
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-01
        • 2014-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多