用语法理解%20和blob

问题描述 投票:1回答:1

我对JS不太熟悉或不熟悉。

我正在网上阅读有关将表中的数据导出到excel from following article的内容

在那里他们使用了这个功能的例子

function exportTableToExcel(tableID, filename = ''){
    var downloadLink;
    var dataType = 'application/vnd.ms-excel';
    var tableSelect = document.getElementById(tableID);
    var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');

    // Specify file name
    filename = filename?filename+'.xls':'excel_data.xls';

    // Create download link element
    downloadLink = document.createElement("a");

    document.body.appendChild(downloadLink);

    if(navigator.msSaveOrOpenBlob){
        var blob = new Blob(['\ufeff', tableHTML], {
            type: dataType
        });
        navigator.msSaveOrOpenBlob( blob, filename);
    }else{
        // Create a link to the file
        downloadLink.href = 'data:' + dataType + ', ' + tableHTML;

        // Setting the file name
        downloadLink.download = filename;

        //triggering the function
        downloadLink.click();
    }
}

在这里,我无法理解以下几行

  1. var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');
  2. var blob = new Blob(['\ufeff', tableHTML], {type: dataType }); navigator.msSaveOrOpenBlob( blob, filename);

有人可以帮助我理解它。

javascript blob
1个回答
1
投票

第一个元素执行基本URL编码,用其等效的%20替换空格。

第二件事创建了Blob实例,该实例以对应于hex feff的unicode字符开头,然后跟随tableHTML变量的内容。

最后,navigator调用导致浏览器提示用户下载文件。

编辑:

你能否详细分享一下(/ / g,'%20')

这是一个JavaScript正则表达式@Felix Kling指出。 JavaScript中的内联正则表达式以正斜杠开头,以正斜杠结束。 g意味着它在全球范围内应用,而不是第一场比赛。

© www.soinside.com 2019 - 2024. All rights reserved.