gpt4 book ai didi

javascript internet explorer 字节顺序标记

转载 作者:行者123 更新时间:2023-11-29 15:42:51 25 4
gpt4 key购买 nike

我正在研究一种将 HTML 表格保存到 csv 文件的方法。理想情况下,这应该是跨浏览器的,我已经让它在除 Internet Explorer 之外的所有东西上工作。然而,我已经得到了明显的部分工作。剩下的是我无法从我的 JavaScript 获取工作的 csv 文件,因为字节顺序标记被添加到我希望下载的数据之前。

我已经通过在 IE 和其他所有文件中下载 csv 文件并使用十六进制编辑器查看原始文件确认了这种情况,我可以确认 Internet Explorer 下载的文件在 unicode 字符“FFFE”之前。

请看下面的代码。 saveTable 采用位于表内的“”节点。

如果有人可以帮助我诊断问题并提供一些解决方案,我将不胜感激。请原谅我的任何失礼,我认为我以前从未使用过这种性质的网站。因此,如果您需要我提供任何进一步的信息,请告诉我,我会尽力将其提供在这里。

function findTable(node) { // Finds a nodes parent table.
return (node.nodeName !== "TABLE") ? findTable(node.parentNode) : node;
}

function saveTable(node) {
var csv = [];
var table = findTable(node);
var rows = table.getElementsByTagName("tr");
var header = [];
var csv = [];
for (var i = 0; i < rows.length; i++) {
if (i == 0) {
// Do csv stuff.
var dates = rows[i].getElementsByTagName("th");
for (var j = 0; j < dates.length; j++)
(j == 0) ? header.push("") : header.push(dates[j].innerHTML);
csv.push(header.join(","));
}
else {
var rowArray = [];
var jobName = rows[i].getElementsByTagName("th")[0].innerHTML;
var times = rows[i].getElementsByTagName("td");
rowArray.push(jobName);
for (var k = 0; k < times.length; k++)
rowArray.push(times[k].innerHTML);
csv.push(rowArray.join(","));
}
}

node.setAttribute("href", "data:text/csv;charset=utf-8," + csv.join("%0A"));
var fileName = "spreadsheet_data-" + (new Date).getTime() + ".csv";

if (node.download == "")
node.setAttribute("download", fileName);
else {
alert("Handle IE here!");
var bom = "\uFFFE";
var doc = document.open("application/octet-stream", "_blank");
var data = csv.join("\r\n");
doc.charset = "UTF-8";
doc.write(data.replace(bom, ""));
doc.focus();
doc.execCommand('SaveAs', false, fileName);
doc.close();
}
}

表格示例,这不是我自己选择的方式,而是通过另一个软件生成表格的方式。

<table id='results' border='1'>
<tr><th><a href='#' onClick='saveTable(this);' id='download_link'>Download data</a></th><th>2013/05/09</th><th>2013/05/10</th><th>2013/05/10</th><th>2013/05/10</th><th>2013/05/10</th></tr>
<tr>
<th>\PDF\EXOVIGN.PDF</th><td>8.853</td><td>9.050</td><td>8.807</td><td>8.827</td><td>8.835</td></tr>
</table>

最佳答案

如果您没有绝对要求在客户端执行此操作,那么从服务器发送文件可能会省去很多麻烦。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com