代码之家  ›  专栏  ›  技术社区  ›  Kris Erickson

使用GreaseMonkey保存文件

  •  11
  • Kris Erickson  · 技术社区  · 15 年前

    我有一些屏幕上的表格数据,我想导出到一个csv文件(目前我只是把它放在剪贴板上),有没有在GreaseMonkey中这样做?对于在何处查找此类功能的示例或某些文档有何建议?

    只是说清楚,我不想写本地文件系统(我知道这在沙盒中是不可能的),但提供一个可下载的文件-这也可能是不可能的…

    6 回复  |  直到 9 年前
        1
  •  1
  •   Ryley    15 年前

    也许你不能写一个本地的csv,但是你可以写它来表示 Google Spreadsheet ?

        2
  •  6
  •   Community CDub    8 年前

    是的,你可以用blob来完成。

    该脚本将把内容附加到一个链接上,单击该链接将提供下载文件(一个从未存在的文件)。

    更多信息:


    我就是这样做的(还有很多其他的方法):

    1. gm(greasemonkey)脚本生成文件的内容
    2. gm使用sessionstorage.variable=“..content..”将其传递到网页。
    3. 页面内的脚本使链接可见,并将变量的内容附加到blob对象。

    您很多人都需要对对象进行字符串化/解析。

    • contacts=json.parse(sessionstorage.contacts)
    • sessionstorage.contacts=json.stringify(contacts);

    我稍微修改了原始脚本,使其成为多个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;
      };
    

    希望它有帮助。

        3
  •  6
  •   zanetu    9 年前
    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();
    

    DEMO

        4
  •  1
  •   loshmee    13 年前

    另一种方法可能是,如果为每个cvs行触发一个由javascript控制的HTTP请求,那么就需要一个能够存储的本地HTTP服务器小程序(简单的cgi或apache/php可以很容易地做到这一点)。

        6
  •  0
  •   Noumenon    10 年前

    我不知道它是如何工作的,但是免费的实用程序 JSZip 似乎可以生成一个弹出的zip文件供您下载。用户脚本fitocracy批量csv使用jszip收集它生成的100个训练数据文件。