Javascript 如何保存OSX仪表板小部件生成的文件?

Javascript 如何保存OSX仪表板小部件生成的文件?,javascript,macos,save,dashboard,savefiledialog,Javascript,Macos,Save,Dashboard,Savefiledialog,我有一个web应用程序,正在移植到OSX仪表板小部件。web应用程序使用JavaScript在客户端生成一些数据,然后,当用户想要保存数据时,将其发送到服务器端脚本,服务器端脚本使用内容配置:附件将数据转发回来HTTP头,在大多数浏览器中触发保存文件对话框 我曾尝试在仪表板环境中复制此功能。小部件就这样消失了。我不知道,但我怀疑它实际上可能是导航到了不熟悉的内容 那么,我如何触发“保存文件对话框”——或者,如果无法触发,请使用任何方法将小部件生成的数据保存为文件?据我所知,无法通过“保存文件”对

我有一个web应用程序,正在移植到OSX仪表板小部件。web应用程序使用JavaScript在客户端生成一些数据,然后,当用户想要保存数据时,将其发送到服务器端脚本,服务器端脚本使用
内容配置:附件将数据转发回来HTTP头,在大多数浏览器中触发保存文件对话框

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


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

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

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

  • 将数据存储在小部件的首选项中。 通过widget方法设置数据,并使用widget方法检索数据。 只有当数据属于小部件并且不必在小部件外部访问时,这才是一个选项。数据大小也不应该太大

  • 通过小部件的。 这里可以使用任何脚本语言(sh、perl、ruby、python、AppleScript等)

  • 编写一个基于Cocoa/Objective-C的文档


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

    command = widget.system("/bin/bash -c 'cat - > ~/Desktop/test.txt'", yourHandler);
    command.write( "some text" );
    command.close();
    
    这会告诉bash将stdin转换为桌面上的文件,然后写入stdin