Что вызвало ошибку? "Во время работы fileSystem.chooseEntry: недопустимая вызывающая страница. Эту функцию нельзя вызвать с фоновой страницы." - PullRequest
0 голосов
/ 12 ноября 2018

Я использовал chrome.fileSystem.chooseEntry API для сохранения файла на USB-накопителе.

window.chrome.fileSystem.chooseEntry({ type: 'saveFile' }, function (writableEntry) {
  let blob = new Blob([message.params.data], { type: 'text/plain' });
  if (!writableEntry) {
    return;
  }
  writableEntry.createWriter(function (writer) {
    writer.onerror = errorHandler;
    writer.onwriteend = () => {
      console.log('write complete!');
    };
    if (blob) {
      writer.truncate(blob.size);
      waitForIO(writer, function() {
        writer.seek(0);
        writer.write(blob);
      });
    }
  });
});

function waitForIO(writer, callback) {
    // set a watchdog to avoid eventual locking:
    var start = Date.now();
    // wait for a few seconds
    var reentrant = function () {
        if (writer.readyState === writer.WRITING && Date.now() - start < 4000) {
            setTimeout(reentrant, 100);
            return;
        }
        if (writer.readyState === writer.WRITING) {
            console.error(`Write operation taking too long, aborting! (current writer readyState is ${writer.readyState})`);
            writer.abort();
        }
        else {
            callback();
        }
    };
    setTimeout(reentrant, 100);
}

Обратный вызов не является fileEntry. WritableEntry не определен. Вы знаете, в чем проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...