Как обнаружить событие перетаскивания в Firefox при перетаскивании за пределы окнаJquery

Программирование на jquery
Ответить
Anonymous
 Как обнаружить событие перетаскивания в Firefox при перетаскивании за пределы окна

Сообщение Anonymous »

Firefox неправильно запускает событие перетаскивания при перетаскивании за пределы окна:

https://bugzilla.mozilla.org/show_bug.cgi?id= 665704

https://bugzilla.mozilla.org/show_bug.cgi?id=656164

Я' Я пытаюсь найти обходной путь для этой проблемы (который, как я знаю, возможен, потому что Gmail делает это), но единственное, что я могу придумать, кажется действительно хакерским.

Один способ узнать, что произошло перетаскивание за пределы окна, — дождаться прекращения срабатывания события перетаскивания (поскольку перетаскивание срабатывает постоянно во время операции перетаскивания). Вот как я это делаю:

Код: Выделить всё

var timeout;

function dragleaveFunctionality() {
// do stuff
}

function firefoxTimeoutHack() {
clearTimeout(timeout);
timeout = setTimeout(dragleaveFunctionality, 200);
}

$(document).on('dragover', firefoxTimeoutHack);
Этот код по сути снова и снова создает и очищает тайм-аут. Таймаут в 200 миллисекунд не будет достигнут, пока событие перетаскивания не перестанет срабатывать.

Хотя это работает, мне не нравится идея использовать таймаут для эта цель. Это кажется неправильным. Это также означает, что существует небольшая задержка до того, как стиль «dropzone» исчезнет.

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

Есть ли у кого-нибудь лучший способ сделать это?

ОБНОВЛЕНИЕ:

Вот код, который я использую:

Код: Выделить всё

 $(function() {
var counter = 0;
$(document).on('dragenter', function(e) {
counter += 1;
console.log(counter, e.target);
});
$(document).on('dragleave', function(e) {
counter -= 1;
console.log(counter, e.target);
});
});

Код: Выделить всё

Open up the console and look at what number is reporting when dragging files in and out of the window. The number should always be 0 when leaving the window, but in Firefox it's not.



Подробнее здесь: https://stackoverflow.com/questions/102 ... the-window
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»