javascript - 在 WebView 中从 JavaScript 本地保存文件

标签 javascript jquery objective-c cocoa webview

好的,这是大局:

  • 我们有一个原生 Cocoa/OSX 应用
  • 此应用内有一个 WebView
  • 在此 WebView 内,有一个本地 Web 应用,其代码驻留在应用的捆绑资源中

现在,事情是:

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

最佳答案

您可以通过使用 WebPolicyDelegate 拦截对 WebView 内链接的点击,将文件保存在 Cocoa 端。我在一个项目中使用以下委托(delegate)方法完成了此任务:

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

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

关于javascript - 在 WebView 中从 JavaScript 本地保存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25781417/

相关文章:

javascript - 为什么这个视频无法播放? HTML5 Canvas

javascript - 在网站的一次导航中仅显示一次弹出窗口

javascript - 如何从 blazeComponent 中的不同模板调用函数?

iphone - ABPeoplePickerNavigationController 在 IOS 7 中崩溃

iphone - NSCoder encode Object : and encodeObject:forkey:? 有什么区别

javascript - JavaScript 中的小数到分数

javascript - 如何在单击时更改具有一个 id 的多个按钮类?

javascript - HTML,试图在左侧创建一个滑动菜单(附截图)

javascript - PHP 中的 explode/内爆数组

iphone - 当 UITableViewCell 处于突出显示状态时如何执行操作?