Событие Webkit ondrop при перетаскивании

Я пытаюсь перетащить один img, и поэтому он запускает ondragenter для IE и событие dragover для стандартных браузеров, в IE и FF после того, как пользователь перетаскивает, он может запускать событие ondrop, однако на основе Webkit (chrome и safari) мне нужно отменить или preventDefault() в событии перетаскивания, это отключит перетаскивание. Любая идея по решению этой проблемы? Спасибо

Обновление: я имею в виду designMode='on'


person monmonja    schedule 22.04.2010    source источник
comment
вы нашли решение для этого? Похоже на странную ошибку в хроме и сафари.   -  person Roman Kupin    schedule 09.09.2011


Ответы (1)


По умолчанию спецификация HTML5 автоматически отменяет действие перетаскивания на dragOver/drageEnter, если только вы сами не отмените (вернете false и e.preventDefault()) это событие. Это вообще не должно отменять действие перетаскивания.

Сначала это кажется немного странным. Но я использую этот код, и он работает.

aDivElement.ondrop = function(e) {
  alert("yo");
};

aDivElement.ondragenter = function(e) {
      e.dataTransfer.dropEffect = 'move'
      e.preventDefault();
      return false;
 };

aDivElement.ondragover = function (e) {
   e.dataTransfer.dropEffect = 'move';
   e.preventDefault();
   return false;
 };
person Kinlan    schedule 22.04.2010
comment
Попробовал это, и это работает, проблема, если вы примените это к designMode='on', где пользователи могут перетаскивать куда угодно, и если я применю e.preventDefault(), то действие перетаскивания пользователя будет отменено, и функции при перетаскивании будут неправильными для мне нужно сделать некоторые манипуляции в зависимости от того, где пользователь бросает элемент. Любая идея по этому поводу? Спасибо - person monmonja; 23.04.2010