sto cercando di tenere traccia di un DragEnter/partire per l'intero schermo, che è finora lavorando bene in Chrome/Safari, per gentile concessione del plugin draghover da https://stackoverflow.com/a/10310815/698289 come in:Firefox cottura DragLeave durante il trascinamento sul testo
$.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');
}
});
});
Tuttavia Firefox è ancora mi dà problemi quando mi trascino sopra gli elementi di testo, ecco un violino per dimostrare: http://jsfiddle.net/tusRy/6/
è questo un bug di Firefox o può questo essere addomesticato con JS? O c'è un metodo più robusto per eseguire tutto questo?
Grazie!
AGGIORNAMENTO: aggiornamento violino a http://jsfiddle.net/tusRy/6/ per ridurre un po 'la confusione. Per spiegare il comportamento previsto del violino:
- Trascinare un file nella finestra e p.target deve essere "ENTER" colorato in giallo.
- Trascinare un file fuori dalla finestra e p.target dovrebbe essere "LEAVE" colorato in rosso.
- Rilasciare un file nella finestra e p.target dovrebbe essere "LEAVE" colorato in rosso.
In firefox, l'evento LEAVE viene attivato quando si trascina il file sul testo.
Ho lavorato su questo per ora utilizzando un div overlay, come per http://jsfiddle.net/tusRy/7/ tuttavia non sono molto contento di questa soluzione THE, quindi lascerò questa domanda aperta finché non arriva un'idea migliore. – DanH