FileSaver.js -.saveAs: 如何添加监听器

FileSaver.js -.saveAs: How to add listeners

我的代码(除了 filesaver.js 依赖项 (https://github.com/eligrey/FileSaver.js/) 之外,我本来可以让它运行的)

  var array = new Array();
  array[0] = 'a'; //.replace(/<br>/g, '\n\t');
  var blob = new Blob(array, {type: "text/plain;charset=utf-8"});

  var pub = function () {
    console.log('hello');
    console.log(new Error().stack);
  }

    let loc = window.location.pathname.substring(window.location.pathname.lastIndexOf("/") + 1);
    let obj = window.saveAs(blob, loc);
    obj.onwriteend = pub;
//    obj.onerror = pub;
    obj.onabort = pub;

文件保存没有问题

问题是 onwriteend 处理程序在我选择文件之前就被调用了,而 onabort 永远不会被调用。我不知道这里发生了什么。我试图在内容写入磁盘或文件选择器中止时获得回调。

FileSaver.js 受限于 save link 隧道的使用:它声明的侦听器不起作用,无法获取保存文件的名称和目录,甚至不知道如果文件已保存。

使用 browser-nativefs 而不是 FileSaver.js 的好处在于它使用已建立的 FileHandler / File API。但是 browser-nativefs 对我的目的来说太有限了:你无法获取文件下载的目录/URI/URL。提供此“link”的唯一方法是通过 JavaScript 可以看到的范围之外的 (FileSave.js) 浏览器文件下载过程。