我有一个Web应用程序,我正在移植到OS X Dashboard小部件。 Web应用程序使用JavaScript在客户端生成一些数据,然后,当用户想要保存它时,将其发送到服务器端脚本,该脚本使用Content-disposition: attachment;
HTTP标头中继数据,触发保存大多数浏览器中的-file对话框。
我已尝试在Dashboard环境中复制此内容。小部件简直消失了。我不知道,但我怀疑它可能实际上是导航到不熟悉的内容。
那么,我如何触发“保存文件对话框” - 或者,如果没有,请使用任何方法来保存Widget生成的文件数据?
答案 0 :(得分:2)
据我所知,无法通过“保存文件”对话框从仪表板小部件保存文件,因为小部件的目的是显示信息(有或没有互联网访问),进行计算或控制应用
但是,您有三个选项可以在本地存储数据:
将数据存储在窗口小部件的首选项中。 通过setPreferenceForKey窗口小部件方法设置数据,并使用preferenceForKey窗口小部件方法检索它。 如果数据属于窗口小部件并且不必在窗口小部件外部访问,则这只是一个选项。此外,数据大小也不应太大。
通过小部件的system command执行脚本。 这里可以使用任何脚本语言(sh,perl,ruby,python,AppleScript,...)。
根据widget plugin撰写Cocoa / Objective-C。
答案 1 :(得分:2)
正确的方法是使用cocoa widget插件,它可以让你使用另存为对话框。快速的方法就是这样:
command = widget.system("/bin/bash -c 'cat - > ~/Desktop/test.txt'", yourHandler);
command.write( "some text" );
command.close();
这告诉bash将cat stdin写入桌面上的文件,然后写入stdin。