Подтвердить что ты не робот

Событие кавычки HTML5 не работает, если обработчик не обрабатывается

Я слушаю событие drop и делаю e.preventDefault() Но его попытка открыть сброшенный файл. Он работал до вчерашнего дня. Но только сегодня он сломался по неизвестной причине. Я сделал JsFiddle#bwquR/10, чтобы отразить то же самое.

Изменить:

Похоже, если вы не принимаете событие dragover drop, невозможно обработать. даже в скрипке Если вы прокомментируете dragover, это не сработает.
В реальной работе я пропустил написание dragover Но его вопрос еще не будет drop без dragover

Скрипка действительно работала, но тело было настолько маленьким (там был только текст drop). Он принимал событие drop только на той небольшой площади, где текст drop лежит не на всем теле. Поэтому я думал, что это не работает. извините за путаницу.

4b9b3361

Ответ 1

Я предполагаю, что это связано с тем, что без обработчика событий dragOver используется обработчик события по умолчанию события dragOver, поэтому после этого событие события переадресации не запускается. Существует необходимость в e.preventDefault для события dragOver перед событием drop.

Ответ 2

Я не уверен, правильно ли я понял вашу проблему, но если вы хотите прочитать упакованные файлы, вам нужно обработать событие dragover и поместить туда хотя бы эту строку кода:

evt.dataTransfer.dropEffect = 'copy';

иначе dropEffect по умолчанию не имеет значения null, и вы не получите никаких данных.

Ответ 3

https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Drag_operations

Если вы хотите разрешить падение, вы должны запретить обработку по умолчанию, отменив событие. Вы можете сделать это либо путем возвращения false из атрибута, определяемого атрибутом событий, либо путем вызова метода event event.preventDefault. Последнее может быть более осуществимым в функции, определенной в отдельном script.

<div ondragover="return false">
<div ondragover="event.preventDefault()">

Вызов метода preventDefault во время события dragenter и dragover указывает на то, что в этом месте разрешено падение. Однако вы обычно хотите вызвать метод preventDefault только в определенных ситуациях, например, только при перетаскивании ссылки. Для этого вызовите функцию, которая проверяет условие и отменяет событие только при выполнении условия. Если условие не выполняется, не отменяйте событие, и при этом пользователь не отпускает кнопку, если пользователь отпускает кнопку мыши.

https://developer.mozilla.org/en-US/docs/Web/Events/dragover

  /* events fired on the drop targets */
  document.addEventListener("dragover", function( event ) {
      // prevent default to allow drop
      event.preventDefault();
  }, false);

Ответ 4

Прекрасно работает для меня. Вы загружаете это как HTTP или URL-адрес FILE? Я считаю, что это должен быть URL-адрес HTTP с Chrome.