我有一些屏幕抓取的表格數據,我想導出到CSV文件(目前我只是把它放在剪貼板中),反正有Greasemonkey做到這一點嗎?關於在哪裏查找示例或有關此類功能的某些文檔的任何建議?使用Greasemonkey保存文件
只是要清楚,我不想寫本地文件系統(我知道,在沙箱中是不可能的),而是提出一個可下載的文件 - 這可能也是不可能的...
我有一些屏幕抓取的表格數據,我想導出到CSV文件(目前我只是把它放在剪貼板中),反正有Greasemonkey做到這一點嗎?關於在哪裏查找示例或有關此類功能的某些文檔的任何建議?使用Greasemonkey保存文件
只是要清楚,我不想寫本地文件系統(我知道,在沙箱中是不可能的),而是提出一個可下載的文件 - 這可能也是不可能的...
也許你不能把它寫到本地的CSV文件中,但你可能會寫它來說一個Google Spreadsheet?如果你開除一個JavaScript控制的http請求的每個CVS行,你有一個本地的HTTP服務器小程序,它能夠存儲(簡單的CGI或Apache/PHP可以做到這一點很容易)
我不想寫一個本地文件,更像是創建要下載一個新的文件。 – 2010-06-02 23:42:38
另一種方法可能是不知道它是如何工作的,但免費的實用程序JSZip似乎能夠生成一個Zip文件,彈出供您下載。用戶腳本Fitocracy Bulk CSV使用JSZip收集它生成的健身數據的100個文件。
我的
是的,你可以使用BLOB來做到這一點。
該腳本會將內容附加到一個鏈接,點擊該鏈接將提供下載文件(從未存在的文件)。在
更多信息:
這是我做到了(還有很多其他的方法來做到這一點):
很多人需要對對象進行字符串化/解析。
我稍微修改了原來的腳本,使它通用多MIME類型。
這是我的。
// Stuff to create the BLOB object --- ANY TYPE ---
var textFile = null,
//-- Function
makeTextFile = function (text,textType) {
// textType can be 'text/html' 'text/vcard' 'text/txt' ...
var data = new Blob([text], {type: textType });
// If we are replacing a previously generated file we need to
// manually revoke the object URL to avoid memory leaks.
if (textFile !== null) {
window.URL.revokeObjectURL(textFile);
}
textFile = window.URL.createObjectURL(data);
return textFile;
};
希望它有幫助。
var data='col1,col2\nval1,val2';
var a = document.createElement('a');
a.href = 'data:application/csv;charset=utf-8,' + encodeURIComponent(data);
//supported by chrome 14+ and firefox 20+
a.download = 'data.csv';
//needed for firefox
document.getElementsByTagName('body')[0].appendChild(a);
//supported by chrome 20+ and firefox 5+
a.click();
有趣的想法。我肯定會研究這一點,但可能需要比我願意爲此做更多的工作,也許會讓實際的Firefox附加程序更快地訪問文件系統。 – 2010-06-02 23:45:37