Ja próbuje śledzić dragenter/pozostawić na całym ekranie, który do tej pory działa bez zarzutu w Chrome/Safari, uprzejmości wtyczki draghover od https://stackoverflow.com/a/10310815/698289 jak w:Firefox wypalania dragleave podczas przeciągania na tekst
$.fn.draghover = function(options) {
return this.each(function() {
var collection = $(),
self = $(this);
self.on('dragenter', function(e) {
if (collection.size() === 0) {
self.trigger('draghoverstart');
}
collection = collection.add(e.target);
});
self.on('dragleave drop', function(e) {
// timeout is needed because Firefox 3.6 fires the dragleave event on
// the previous element before firing dragenter on the next one
setTimeout(function() {
collection = collection.not(e.target);
if (collection.size() === 0) {
self.trigger('draghoverend');
}
}, 1);
});
});
};
function setText(text) {
$('p.target').text(text);
}
$(document).ready(function() {
$(window).draghover().on({
'draghoverstart': function() {
setText('enter');
},
'draghoverend': function() {
setText('leave');
}
});
});
jednak Firefox jest wciąż daje mi problemów, gdy przeciągam nad adnotacji, oto skrzypce wykazać: http://jsfiddle.net/tusRy/6/
jest to błąd Firefox lub może to być oswojone z JS? Czy istnieje bardziej niezawodna metoda wykonania tego wszystkiego?
Dzięki!
AKTUALIZACJA: Zaktualizowane skrzypce do http://jsfiddle.net/tusRy/6/ w celu zmniejszenia bałaganu. Aby wyjaśnić oczekiwane zachowanie skrzypiec:
- Przeciągnij plik do okna, a p.target powinno być "ENTER" w kolorze żółtym.
- Przeciągnij plik poza okno, a p.target powinno być "LEAVE" w kolorze czerwonym.
- Upuść plik w oknie, a p.target powinien mieć wartość "LEAVE" w kolorze czerwonym.
W firefox zdarzenie LEAVE jest wyzwalane po przeciągnięciu pliku przez tekst.
Pracowałem nad tym teraz, używając nakładki div, jak na http://jsfiddle.net/tusRy/7/ jednak nie jestem zadowolony z tego, że to jest rozwiązanie, więc zostawię to pytanie otwarte dopóki nie pojawi się lepszy pomysł. – DanH