【问题标题】:How do I save a file generated by an OS X Dashboard Widget?如何保存由 OS X Dashboard Widget 生成的文件?
【发布时间】:2011-02-13 00:10:24
【问题描述】:

我有一个要移植到 OS X Dashboard 小部件的网络应用程序。 Web 应用程序使用 JavaScript 在客户端生成一些数据,然后,当用户想要保存它时,将其发送到服务器端脚本,该脚本使用 Content-disposition: attachment; HTTP 标头中继数据,触发保存文件大多数浏览器中的对话框。

我尝试在仪表板环境中复制它。小部件只是消失了。我不知道,但我怀疑它实际上可能正在导航到不熟悉的内容。

那么,我如何触发“保存文件对话框”——或者,如果失败了,使用任何方法将 Widget 生成的数据保存为文件?

【问题讨论】:

    标签: javascript macos save dashboard savefiledialog


    【解决方案1】:

    据我所知,无法通过“保存文件”对话框从仪表板小部件保存文件,因为小部件的目的是显示信息(有或没有互联网访问)、进行计算或控制应用程序。

    但是,您可以通过三种方式在本地存储数据:

    1. 将数据存储在小部件的首选项中。 通过setPreferenceForKey 小部件方法设置数据并使用preferenceForKey 小部件方法检索数据。 如果数据属于小部件并且不必在小部件外部访问,这只是一个选项。数据量也不能太大。

    2. 通过小部件的system command 执行脚本。 任何脚本语言都可以在这里使用(sh、perl、ruby、python、AppleScript,...)。

    3. 编写一个基于 Cocoa/Objective-C 的 widget plugin

    【讨论】:

      【解决方案2】:

      正确的做法是使用可可小部件插件,它可以让您使用另存为对话框。快速的方法是这样的:

      command = widget.system("/bin/bash -c 'cat - > ~/Desktop/test.txt'", yourHandler);
      command.write( "some text" );
      command.close();
      

      这告诉 bash 将标准输入转换为桌面上的文件,然后写入标准输入。

      【讨论】:

        猜你喜欢
        • 2013-02-05
        • 1970-01-01
        • 1970-01-01
        • 2012-04-06
        • 2010-11-04
        • 1970-01-01
        • 2012-04-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多