【发布时间】:2016-03-04 18:48:37
【问题描述】:
我有一个程序可以跟踪服务器上发生的事件数量。我希望能够将单个事件详细信息导出到 csv 文件并允许用户下载。
我在首页上有一个按钮,如下所示:
<button class="btn btn-main btn-actions-ok" ng-click="exportIncident()">Export Incident</button>
在后端代码中,我有一个名为 totaDatarow [];
的数组数组 $scope.exportIncident = function () {
var totalDataRow = [];
var csvContent = "data:text/csv;charset=utf-8,";
var exportDataHeader = ["Event Type", "User ID", "Event Date", "Description", "DocNum", "Library", "Version", "Comments"]
totalDataRow.push(exportDataHeader);
var incident = $scope.incident;
incident.details.forEach(function (detail) {
var exportDatarow = [];
//logic to add incident information to exportDatarow
totalDataRow.push(exportDatarow);
})
totalDataRow.forEach(function (infoArray) {
dataString = infoArray.join(",");
csvContent = csvContent + "\n" + dataString
});
var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "Incident_"+ incident.id +".csv");
link.click();
}
我没有使用 window.open,因为使用这种方式,我找不到自定义生成文件的文件名的方法。所以我在按钮内创建了一个链接,然后单击它进行下载。 在 chrome 中,这段代码工作得很好。创建并下载 csv 文件。但是在 Internet Explorer 中,此代码根本不起作用。 当我单击按钮时,没有任何反应。 我通过调试器运行它,发现当 Internet Explorer 到达 link.click() 时。当它尝试处理该行时,什么也没有发生。
我需要帮助,因为我不知道这是我的代码问题还是 Internet Explorer 兼容性问题?或者别的谢谢。
【问题讨论】:
标签: javascript jquery angularjs internet-explorer