javascript Метод загрузки FileReader отображает «Restricted» в консоли Firefox - PullRequest
0 голосов
/ 07 февраля 2020

У меня на работе ситуация, когда я пытаюсь автоматизировать добавление нового контента на устаревшую платформу. Я работал с greasemonkey в firefox и пытаюсь создать интерфейс перетаскивания поверх существующей страницы, где пользователи могут загружать таблицы Excel, и он будет анализироваться на JSON. Я пытаюсь использовать FileReader для загрузки файла в то, что может быть проанализировано. Следуя Листу JS документации , я попытался добавить в свой код следующее для обработки файла:

    // create drag drop interface to upload excel data
    const dragDropEl = document.createElement('div');
    dragDropEl.setAttribute('style', 'border: 1px dotted black; position: absolute; top: 350; left: 100; z-index: 10; height: 200px; width: 800px; text-align: center;');
    dragDropEl.addEventListener('dragover', setCopyMethod, false);
    dragDropEl.addEventListener('dragenter', setCopyMethod, false);
    dragDropEl.addEventListener('drop', loadExcelSheet, false);
    dragDropEl.appendChild(button);
    document.body.appendChild(dragDropEl);
  }

  var setCopyMethod = function(event) {
    // set method to copy for uploading file
    event.stopPropagation();
    event.preventDefault();
    event.dataTransfer.dropEffect = 'copy';
  }

  var loadExcelSheet = function(event) { 
    // upload and read file with SheetJS
    event.stopPropagation();
    event.preventDefault();
    var file = event.dataTransfer.files[0];
    var reader = new FileReader();
    reader.onload = function(event) { // This event never fires
      let data = new Uint8Array(event.target.result);
      var workbook = unsafeWindow.XLSX.read(data);
      // try to do something with xlsx data
    }
    reader.readAsArrayBuffer(file);
  }

Проблема в том, что метод onload никогда не срабатывает. Вместо этого, что я вижу, когда я регистрирую программу чтения файлов: Я хотел бы знать, что конкретно означает «Ограниченный» и какие у меня есть варианты, если таковые имеются. Заранее спасибо!

...