Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript internet explorer字节顺序标记_Javascript_Internet Explorer_Byte Order Mark - Fatal编程技术网

javascript internet explorer字节顺序标记

javascript internet explorer字节顺序标记,javascript,internet-explorer,byte-order-mark,Javascript,Internet Explorer,Byte Order Mark,我正在研究一种将HTML表格保存到csv文件的方法。理想情况下,这应该是跨浏览器的,我已经得到了这一切工作,但Internet Explorer。然而,我已经让明显的部分工作。剩下的是,我无法从我的JavaScript中获得一个工作的csv文件,因为我希望下载的数据前面有一个字节顺序标记 我已经通过在IE和其他所有工具中下载csv文件并使用十六进制编辑器查看原始文件确认了这种情况,我可以确认Internet Explorer下载的文件在unicode字符“FFFE”之前 请参阅下面的代码,这样做

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

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

请参阅下面的代码,这样做。存储表采用“2013/05/092013/05/102013/05/102013/05/102013/05/102013/05/10”格式 \PDF\exovion.PDF8.8539.0508.8078.8278.835
如果您没有绝对要求在客户端执行此操作,那么从服务器发送文件可能会为您节省很多麻烦。

您能否在您的问题中添加最简单的HTML,让我们可以使用它?我们只需要表中的一行数据,而且不需要任何样式。在WS2003上使用IE8,我必须使用c将扩展名从“.csv”更改为“.txt”以使其保存(我不想应用修补程序)。我没有在文件开始时获得BOM,无论是否包含
数据。请更换
。如果我的家用电脑的宽带今天晚上再次工作,我将能够在W7/IE10上测试它。我可以确认这是可行的,但理想情况下,用户不需要重命名文件。有没有办法解决此问题?在W7上使用IE10,我可以如果找不到任何有效的字符集,更改字符集仍然会导致编写BOM表(或原始页面的HTML).FWIW,LibreOffice Calc在打开带有
FFFE
BOM的csv文件时没有问题。我不得不放弃此选项,转而选择服务器端解决方案。如何将您的评论标记为“最佳答案”并关闭此选项?
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>