如何将可编辑内容保存到 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? [关闭]