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);
Хотя это работает, мне не нравится идея использовать таймаут для эта цель. Это кажется неправильным. Это также означает, что существует небольшая задержка до того, как стиль «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
Мобильная версия