如何将可编辑内容保存到 WebArchive webView?

Posted

技术标签:

【中文标题】如何将可编辑内容保存到 WebArchive webView?【英文标题】:How do you save to WebArchive webView editable content? 【发布时间】:2011-01-14 05:04:22 【问题描述】:

我正在尝试从 WebView 创建 WebArchive。我可以使用它,但是当我尝试使用已编辑的内容时发现了一个问题。这就是我目前正在做的事情:

[webView setEditable:YES];
WebDataSource *dataSource = [[webView mainFrame] dataSource];

WebArchive *archive = [[WebArchive alloc]
        initWithMainResource:[dataSource mainResource]
        subresources:nil
        subframeArchives:nil];

[[archive data] writeToFile:destinationPath atomically:YES];
[[webView mainFrame]
 loadRequest:[NSURLRequest
     requestWithURL:
     [NSURL fileURLWithPath:destinationPath]
     ]];

我对 WebView 中的内容所做的任何编辑都不会存储在 WebArchive 中。我是否需要将更改提交回原始文件才能使其正常工作?我希望它根据 WebView 中的内容进行保存。任何帮助,将不胜感激。谢谢!

【问题讨论】:

这就是我正在做的并且在这里工作正常(即 writeToFile:atomically:)。我猜想将 webarchive 的内容加载回 webview 有问题。你能检查一下你在destinationPath中写的文件是否是你想要的,即编辑过的文件吗? 我实际上是在将一个 html 文件 (input.html) 加载到 WebView 中,然后尝试将其保存到 WebArchive (output.webarchive) 中。保存有效,但它似乎是从原始文件创建 WebArchive 并忽略所做的更改。当我说更改时,我的意思是在设置 [webView setEditable:YES] 之后删除或添加文本,然后保存 WebArchive,我的任何更改都不会进入输出。这就是你说的工作吗? [dataSource mainResource] return "表示数据源的web资源。返回的内容是基于原始下载的数据。可以使用返回值创建WebArchive对象,而不是使用webArchive方法。”根据 Apple 参考库 (hhttp://developer.apple.com/library/mac/documentation/cocoa/Reference/WebKit/Classes/WebDataSource_Class/Reference/Reference.html)。在这一点上,我相信我需要一种方法来从 WebView 中获取源 DOM,然后创建一个 WebDataSource,然后创建一个 WebArchive。关于如何做到这一点的任何想法? 【参考方案1】:

经过一段时间的挖掘,我能够找出我自己问题的答案。这是我的做法:

WebResource *dataSource = [[[[webView mainFrame] DOMDocument] webArchive] mainResource];

WebArchive *archive = [[WebArchive alloc]
       initWithMainResource:dataSource
       subresources:nil
       subframeArchives:nil];

[[archive data] writeToFile:@"output.webarchive" atomically:YES];

希望对某人有所帮助。

【讨论】:

以上是关于如何将可编辑内容保存到 WebArchive webView?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPhone 上创建 .webarchive? [关闭]

在没有图像的情况下在 Cocoa 中保存 Webarchive

如何将可映射对象保存到 nsuserdefault?

如何将可编辑的文本和图像添加到threejs

如何将可编辑的文本和图像添加到threejs

如何将可绘制资源中的图像保存到 SD 卡?