События Firefox не стреляют - PullRequest
       1

События Firefox не стреляют

0 голосов
/ 20 декабря 2018

У меня есть список списков участников для функции перетаскивания.

td.addEventListener('dragenter', onDragEnter);
td.addEventListener('dragleave', onDragLeave);
td.addEventListener('dragover', onDragOver);
td.addEventListener('drop', onDrop);

В Firefox событие drop не вызывается, когда предмет выпадает.Функции, вызываемые для dragenter, dragover и dragleave, предотвращают действие по умолчанию (скопировано из http://mereskin.github.io/dnd/):

const onDragEnter = e => {
  onDragOver(e);
  console.log('onDragEnter:');
  if(e.target.nodeType == 1) {
    e.target.className = 'drop-over';
}  };

const onDragOver = e => {
  console.log('onDragOver:');
  if(e.target.nodeType == 1) {
    e.dataTransfer.dropEffect = e.target.getAttribute('data-drop-effect');
    e.preventDefault();
    e.stopPropagation();
}  };

Вкл. http://mereskin.github.io/dnd/ все события, кажется, работают (пыталисьте же методы, списки событий и т. д.) Перетаскиваемый элемент создается с определенным атрибутом:

let img = document.createElement('img');
img.src = `icons/${obj._image}`;
img.setAttribute('draggable','true');

В Chrome он отлично работает, на моем веб-сайте и на связанном веб-сайте.

Редактировать: Tried Edgeтакже работает нормально. Пробовал также FF на другой машине, тот же результат. Создал jsfiddle для демо: https://jsfiddle.net/as965dkz/6/

1 Ответ

0 голосов
/ 21 декабря 2018

Как я выяснил, Firefox требует, чтобы dataTransfer.setData() было установлено на событие dragstart.После этого должно быть вызвано событие сброса e.preventDefault();.

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