JavaScript 代码适用于在 FireFox 中下载 csv,但不适用于 Microsoft Edge
JavaScript code works for downloading csv in FireFox but not Microsoft Edge
这在 FireFox 中工作得很好,但是当我在 Microsoft Edge 中单击调用此功能的激活按钮时,没有任何反应...没有提示下载或打开文件,没有错误...没有日志...没有什么。非常感谢你们能提供的任何帮助。谢谢!!!
let val:string='';
let valList = [] ;
let valStr:string = '';
let keysItr = Object.keys(this.policies[0]);
let keyList = Array.from(keysItr);
let keyStr = keyList.toString() ;
keyStr = keyStr.trim() ;
keyStr = keyStr.concat('\n');
for(var i = 0 ; i < this.policies.length ; i++ ){
for (let key of Object.keys(this.policies[i])) {
val = this.policies[i][key] ;
if(val == null){
val = '';
}
val = val.toString() ;
val = val.replace('$','');
val = val.replace(',','');
valList.push(val);
//console.log(val);
}
valStr = valStr.concat(valList.toString());
valStr = valStr.trim() ;
valStr = valStr.concat('\n');
valList = [] ;
}
let csvStr = keyStr.concat(valStr);
var element = document.createElement('a');
element.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(csvStr));
element.setAttribute('download', 'FOOBAR.csv');
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}//end fooBar()```
已修复。
这个问题(当我尝试使用 Microsoft 浏览器通过 URI 传递数据(文本)时,似乎总是这样)达到或超过 ~5kb。我们可以通过为二进制资源而不是文本资源构建 URI 来绕过这个荒谬的限制。
替换了这段代码:
element.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(csvStr));
element.setAttribute('download', 'FOOBAR.csv');
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
使用此代码块:
let blob = new Blob(
[ csvStr ],
{
type : "data:text/csv;charset=utf-8"
}
);
const linkElement = document.createElement('a');
const url = URL.createObjectURL(blob);
linkElement.setAttribute('href', url);
linkElement.setAttribute('download', 'policy_information.csv');
const clickEvent = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': false
});
linkElement.dispatchEvent(clickEvent);```
这在 FireFox 中工作得很好,但是当我在 Microsoft Edge 中单击调用此功能的激活按钮时,没有任何反应...没有提示下载或打开文件,没有错误...没有日志...没有什么。非常感谢你们能提供的任何帮助。谢谢!!!
let val:string='';
let valList = [] ;
let valStr:string = '';
let keysItr = Object.keys(this.policies[0]);
let keyList = Array.from(keysItr);
let keyStr = keyList.toString() ;
keyStr = keyStr.trim() ;
keyStr = keyStr.concat('\n');
for(var i = 0 ; i < this.policies.length ; i++ ){
for (let key of Object.keys(this.policies[i])) {
val = this.policies[i][key] ;
if(val == null){
val = '';
}
val = val.toString() ;
val = val.replace('$','');
val = val.replace(',','');
valList.push(val);
//console.log(val);
}
valStr = valStr.concat(valList.toString());
valStr = valStr.trim() ;
valStr = valStr.concat('\n');
valList = [] ;
}
let csvStr = keyStr.concat(valStr);
var element = document.createElement('a');
element.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(csvStr));
element.setAttribute('download', 'FOOBAR.csv');
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}//end fooBar()```
已修复。 这个问题(当我尝试使用 Microsoft 浏览器通过 URI 传递数据(文本)时,似乎总是这样)达到或超过 ~5kb。我们可以通过为二进制资源而不是文本资源构建 URI 来绕过这个荒谬的限制。
替换了这段代码:
element.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(csvStr));
element.setAttribute('download', 'FOOBAR.csv');
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
使用此代码块:
let blob = new Blob(
[ csvStr ],
{
type : "data:text/csv;charset=utf-8"
}
);
const linkElement = document.createElement('a');
const url = URL.createObjectURL(blob);
linkElement.setAttribute('href', url);
linkElement.setAttribute('download', 'policy_information.csv');
const clickEvent = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': false
});
linkElement.dispatchEvent(clickEvent);```