2010-04-27 60 views
2

我有一個Web應用程序,我正在移植到OS X儀表板小部件。 Web應用程序使用JavaScript在客戶端生成一些數據,然後,當用戶想要保存它時,將其發送到服務器端腳本,該腳本將數據傳回到HTTP頭中,觸發一個保存文件對話框大多數瀏覽器。如何保存OS X Dashboard Widget生成的文件?

我已經嘗試在儀表板環境中重複此操作。 Widget消失。我不知道,但我懷疑它實際上可能導航到不熟悉的內容。因此,如何觸發「保存文件對話框」 - 或者,如果失敗,使用任何方法來保存Widget生成的文件作爲文件?

回答

2

據我所知,無法通過「保存文件」對話框從儀表板小部件保存文件,因爲小部件的目的是顯示信息(帶或不帶互聯網訪問),做計算或控制應用。

然而,你有三種選擇在本地存儲數據:

  1. Store中的小部件的偏好數據。 通過setPreferenceForKey小部件方法設置數據,並使用小部件方法preferenceForKey檢索它。 這只是一個選項,如果數據屬於窗口小部件,並且不必在窗口部件之外訪問。數據大小也不應該太大。

  2. 通過小部件的system command執行腳本。 任何腳本語言都可以在這裏使用(sh,perl,ruby,python,AppleScript,...)。

  3. 編寫基於可可/ Objective-C的widget plugin

2

正確的做法是一個可可部件插件,它可以讓你使用另存爲對話框。快速的方法來做到這一點是這樣的:

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

這是告訴bash貓標準輸入到桌面上的文件,然後寫入標準輸入。