我对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();
}
}
在这里,我无法理解以下几行
var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');
var blob = new Blob(['\ufeff', tableHTML], {type: dataType });
navigator.msSaveOrOpenBlob( blob, filename);
有人可以帮助我理解它。
第一个元素执行基本URL编码,用其等效的%20
替换空格。
第二件事创建了Blob
实例,该实例以对应于hex feff
的unicode字符开头,然后跟随tableHTML
变量的内容。
最后,navigator
调用导致浏览器提示用户下载文件。
编辑:
你能否详细分享一下(/ / g,'%20')
这是一个JavaScript正则表达式@Felix Kling指出。 JavaScript中的内联正则表达式以正斜杠开头,以正斜杠结束。 g
意味着它在全球范围内应用,而不是第一场比赛。