Not allowed to navigate top frame to data URL

原始代码

  1. var elementSaveFile = document.createElement('a')
  2. elementSaveFile.setAttribute('href', 'data:text/plaincharset=utf-8,' + data2Write)
  3. // 利用A标签的download属性完成下载文件功能
  4. elementSaveFile.setAttribute('download', filename)
  5. // 设置为不显示的元素
  6. elementSaveFile.style.display = 'none'
  7. // 添加A标签元素
  8. document.body.appendChild(elementSaveFile)
  9. // 触发A标签元素的点击事件
  10. elementSaveFile.click()
  11. // A标签元素利用后释放
  12. document.body.removeChild(elementSaveFile)
  13. // alert("导出文件结束")

原因

Chrome 禁止从页面打开 Data URI 网址了

改为

  1. var selectorA = document.querySelector("a");
  2. var blob = new Blob([data]); // 创建 blob 对象
  3. selectorA.href = URL.createObjectURL(blob); // 创建一个 URL 对象并传给 a 的 href
  4. selectorA.download = filename; // 设置下载的默认文件名
  5. selectorA.click();// 点击下载链接