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);```