2

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

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

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

4

2 回答 2

2

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

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

这告诉 bash 将标准输入分类到桌面上的文件,然后写入标准输入。

于 2010-05-06T09:07:03.133 回答
2

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

但是,您可以通过三个选项在本地存储数据:

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

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

  3. 编写一个基于 Cocoa/Objective-C 的小部件插件

于 2010-05-03T14:46:52.723 回答