当我点击导出按钮时,chrome将下载名为“download”的文件,其类型为“Document”。如果我手动添加扩展名(.xls),则下载文件的内容是正确的。我想知道下载属性在这种情况下是如何工作的。这是我的代码:
a = document.createElement("a");
var data_type = 'data:application/vnd.ms-excel,';
var table_div = document.getElementById('table');
var table_html = table_div.outerHTML.replace(/ /g, '%20');
a.download = "excel.xls";
a.href = data_type + table_html;
a.click();
此外,在我尝试了不同的PC之后,其中一些可以使用正确的名称下载文件,其中一些与我的相同。并且此代码在所有计算机中都不适用于Firefox。
答案 0 :(得分:2)
这应该可行(我之前使用了与页面内生成的文件基本相同的代码,并且它已经有效),但目前有关最新版Chrome(https://code.google.com/p/chromium/issues/detail?id=366370)的一个未解决的问题"下载"属性被忽略。似乎最新版本的Chrome根据W3C推荐故意忽略了跨源链接的下载属性(在我看来这是一个愚蠢的推荐,但它仍然是一个推荐)。 Chrome可能正在处理数据:" URL为跨源,因此忽略了您的下载属性;如果是这样的话,你几乎无能为力。
编辑:看起来还有一个特别针对数据URI的当前错误:https://code.google.com/p/chromium/issues/detail?id=373182
所以,是的,你的代码是正确的;这是Chrome中的一个错误。