【问题标题】:Saving file locally from JavaScript in WebView在 WebView 中从 JavaScript 本地保存文件
【发布时间】:2014-09-11 07:19:32
【问题描述】:

好的,这是大图:

  • 我们有一个原生 Cocoa/OSX 应用程序
  • 在这个应用里面有一个 WebView
  • 在此 WebView 内部,有一个本地 Web 应用程序,其代码位于应用程序的捆绑资源中

现在,事情是:

  • 假设我想从网络应用程序中保存一个文件(使用 JS),这可能吗?怎么做?
  • 我是否必须将内容“转发”回 Objective-C/Cocoa 并让“真正的”应用进行保存?
  • 如果第一点是可能的(从 JS 中保存),那么沙盒呢?该如何处理?

【问题讨论】:

  • 分享您的研究对每个人都有帮助。告诉我们您尝试了什么以及为什么它不能满足您的需求。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见how to ask
  • @Cerbrus 好吧,我的研究没有发现任何问题。 Webview(尤其是其特定于 OSX 的处理)似乎没有太多的追随者。这就是为什么我决定看看其他人是否曾经处理过同样的问题,在这里。

标签: javascript jquery objective-c cocoa webview


【解决方案1】:

您可以通过使用WebPolicyDelegate 拦截对WebView 内链接的单击,将文件保存在可可方面。我已经在一个项目中使用以下委托方法完成了这项工作:

- (void)webView:(WebView *)sender
        decidePolicyForNavigationAction:(NSDictionary *)actionInformation
        request:(NSURLRequest *)request frame:(WebFrame *)frame
        decisionListener:(id<WebPolicyDecisionListener>)listener

当涉及到沙盒时,这实际上取决于您要如何处理该文件。 如果我没记错的话,您可以轻松地将文件保存在沙箱中(例如NSApplicationSupportDirectory),如果您显示文件对话框,沙箱将被自动处理。

【讨论】:

  • 很棒的答案!非常感谢! ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 2012-06-19
  • 1970-01-01
  • 2014-10-22
相关资源
最近更新 更多