util.js 902 B

12345678910111213141516171819202122232425
  1. // 通用小工具(被多个页面共用)
  2. /**
  3. * 统一文件下载入口。
  4. * IE10/11 走 msSaveOrOpenBlob(不支持 a[download]);现代浏览器走 a[download] + ObjectURL,下载完立即回收 URL。
  5. * 注意:此函数是唯一定义,勿在 polyfills.js 或其它文件重复声明(全局函数重复声明会静默覆盖)。
  6. * @param {Blob} blob
  7. * @param {string} filename
  8. */
  9. function downloadBlobFile(blob, filename) {
  10. if (window.navigator && window.navigator.msSaveOrOpenBlob) {
  11. window.navigator.msSaveOrOpenBlob(blob, filename);
  12. return;
  13. }
  14. var url = URL.createObjectURL(blob);
  15. var a = document.createElement("a");
  16. a.href = url;
  17. a.download = filename || "download";
  18. document.body.appendChild(a);
  19. a.click();
  20. setTimeout(function () {
  21. document.body.removeChild(a);
  22. URL.revokeObjectURL(url);
  23. }, 100);
  24. }