ddimonn8080
@ddimonn8080

Почему в Chrome работает, а в Firefox нет?

Есть скрипт который загружает в обработчик фото. (Drag and Drop):
$(document).ready(function(){

	$('<div class="drop__zone">Drop for download</div>').prependTo('div[class*="innerItem"]');
	
	$(document).on(
		'dragover', '.drop__zone', function(e) {
			e.preventDefault();
			$(this).addClass('drop__hover');
			$(this).css({
				'line-height': $(this).height() + 'px'
			});
			$(this).text('Drop for download');
		}
	).on(
		'dragleave', '.drop__zone', function(e) {
			e.preventDefault();
			$(this).removeClass('drop__hover');
		}
	).on(
		'drop', '.drop__zone', function(e) {
			event.preventDefault();
			$(this).removeClass('drop__hover');
       		var files = event.dataTransfer.files;

       		loadInView(files);

       		var xhr = new XMLHttpRequest();
			$this = $(this);
			xhr.upload.addEventListener('progress', uploadProgress.bind(null, $this), false);
			// xhr.onreadystatechange = stateChange;
			xhr.open('POST', '/handler.php');
			xhr.setRequestHeader('X-FILE-NAME', files.name);
			xhr.send(files);
		}
	);

	/* -------------------------------------------------------------------------------
	----------------------------------------------------------------------------------*/
	var dataArray = [];
	var filesLength;
	var FReventTarget;


	// Функция загрузки изображений на предпросмотр
   function loadInView(files) {
      // Для каждого файла
		$.each(files, function(index, file) {
			if (files[index].type.match('image.*')) {

	            var eventTarget = event.target;

	         	// Создаем новый экземпляра FileReader
	        	var fileReader = new FileReader();

	        	fileReader.eventTarget = eventTarget;

	            // Инициируем функцию FileReader
	        	fileReader.onload = (function(file) {
	               
					return function(e) {
						// Помещаем URI изображения в массив
						dataArray.push({name : file.name, value : this.result});
						filesLength = files.length;
						FReventTarget = fileReader.eventTarget;

						addImage((dataArray.length-1), filesLength, FReventTarget);
					}; 
	                  
	        	})(files[index]);
				// Производим чтение картинки по URI
				fileReader.readAsDataURL(file);
			}

		});
      	return false;
   }

   // Процедура добавления эскизов на страницу
	function addImage(ind, filesLength, FReventTarget) {
		if (filesLength == 1) {
			if (ind < 0 ) { 
				start = 0; end = dataArray.length; 
			} else {
				// иначе только определенное изображение 
				start = ind; end = ind+1;
			} 
			// Цикл для каждого элемента массива
			for (i = start; i < end; i++) {
				// размещаем загруженные изображения
				var className = $(FReventTarget).parent().find('img').attr('class');
				$(FReventTarget).parent().find('img').parent().html('<img src="' + dataArray[i].value + '" class="' + className + '">');
			}
			return false;
		}
	}

	function uploadProgress($this, event) {
	    var percent = parseInt(event.loaded / event.total * 100);
	    $this.text('Загрузка: ' + percent + '%').addClass('download__result');
	}

	function stateChange(event) {
	    if (event.target.readyState == 4) {
	        if (event.target.status == 200) {
	            dropZone.text('Загрузка успешно завершена!');
	        } else {
	            dropZone.text('Произошла ошибка!');
	            dropZone.addClass('error');
	        }
	    }
	}

});

Этот скрипт работает в Chrome Версия 56.0.2924.87
Но не работает в Firefox 52.0.2 (32-бит).

В консоли ошибка:
TypeError: event.dataTransfer is undefined


В чём может быть ошибка?

Спасибо.
  • Вопрос задан
  • 523 просмотра
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
function(e) {
      event.preventDefault();

Не наводит на мысли?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы