Прослушиватели событий XMLHttpRequest не работают на Edge - PullRequest
0 голосов
/ 12 июня 2019
S3Upload.prototype.uploadToS3 = function(file, url, public_url, opts) {
      var this_s3upload, type, xhr;
      this_s3upload = this;
      type = opts && opts.type || file.type;
      xhr = this.createCORSRequest('PUT', url);
      if (!xhr) {
        this.onError('CORS not supported');
      } else {
        xhr.onload = function() {
          if (xhr.status === 200) {
            this_s3upload.onProgress(100, 'Upload completed.', public_url, file);
            return this_s3upload.onFinishS3Put(public_url, file);
          } else {
            return this_s3upload.onError('Upload error: ' + xhr.status, file);
          }
        };
        xhr.onerror = function() {
          return this_s3upload.onError('XHR error.', file);
        };
        xhr.upload.onprogress = function(e) {
          var percentLoaded;
          if (e.lengthComputable) {
            percentLoaded = Math.round((e.loaded / e.total) * 100);
            return this_s3upload.onProgress(percentLoaded, (percentLoaded === 100 ? 'Finalizing.' : 'Uploading.'), public_url, file);
          }
        };
      }
      xhr.setRequestHeader('Content-Type', type);
      xhr.setRequestHeader('x-amz-acl', 'public-read');
      return xhr.send(file);
    };

Я использую этот скрипт для загрузки файла в S3, который является частью https://github.com/tadruj/s3upload-coffee-javascript. Некоторые параметры функции были изменены незначительно, но в остальном это тот же скрипт. Сама загрузка работает нормально, однако прогресс не обновляется, поскольку файл загружается в Edge. Когда я загружаю файл, он остается на 0%, а затем переходит на 100%, как только он закончится, и между ними ничего нет. Это не проблема в Chrome или Firefox.

Из того, что я могу сказать, проблема, кажется, в коде

        xhr.upload.onprogress = function(e) {
          var percentLoaded;
          if (e.lengthComputable) {
            percentLoaded = Math.round((e.loaded / e.total) * 100);
            return this_s3upload.onProgress(percentLoaded, (percentLoaded === 100 ? 'Finalizing.' : 'Uploading.'), public_url, file);

Прослушиватель событий для процесса загрузки файла не запускается, и отладчик, кажется, подтверждает это. В чем может быть проблема здесь?

1 Ответ

0 голосов
/ 13 июня 2019

Похоже, что это просто проблема с некоторыми версиями Edge, в соответствии с этим https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12224510/. Проблема была исправлена ​​в EdgeHTML версии 18.17763.

...