Javascript “我怎么能有”的意思;导出为CSV“;按钮在铬扩展?

Javascript “我怎么能有”的意思;导出为CSV“;按钮在铬扩展?,javascript,csv,google-chrome-extension,Javascript,Csv,Google Chrome Extension,我创建了一个Chrome扩展,它扫描页面,并在弹出窗口中创建当前页面的h1-h6标签列表。这是主StackOverflow页面的列表外观: h1 | All Questions h3 | XmlElement has a list as attribute but its items aren't separated by comma h3 | Eclipse, Easily remove/fix all @Override due to Java version change

我创建了一个Chrome扩展,它扫描页面,并在弹出窗口中创建当前页面的h1-h6标签列表。这是主StackOverflow页面的列表外观:

h1 | All Questions
h3 | XmlElement has a list as attribute but its items aren't separated by comma
h3 | Eclipse, Easily remove/fix all @Override due to Java version change
...
我想有一个“导出”按钮,这将使我能够保存在CSV格式的报告。是否可能?

您可以使用创建存储CSV内容的URI。然后可以创建一个元素,并将其设置为所需的文件名

如果您的CSV非常大,您应该使用和而不是数据URI方案来创建链接href

以下是使用数据URI方案的示例:

var link = document.createElement("a");
link.textContent = "Save as CSV";
link.download = "file.csv";
link.href = "data:text/csv,h1;All Questions\n"
document.body.appendChild(link);

当用户单击链接时,“file.csv”将自动保存在默认下载文件夹中。

基于@check\u ca answer,我编写了以下代码以返回阵列数据的csv链接元素:

function getCSVLinkElement(arr){

    var link = document.createElement("a");
    link.textContent = "Save as CSV";
    link.download = "file.csv";
    var csv = arr.map(function(v){return v.join(',')}).join('\n');
    link.href = encodeURI("data:text/csv,"+csv);

    return link;

}

var el = getCSVLinkElement([['num','sq'],[2,4],[3,9]]);
document.body.appendChild(el);
您可以找到Blob和createObjectURL的好例子。