我試圖跟蹤的dragenter /離開整個屏幕,這是迄今爲止在Chrome/Safari瀏覽器,從https://stackoverflow.com/a/10310815/698289的draghover插件的禮貌在工作正常時:火狐射擊dragleave拖動文本上
$.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');
}
});
});
但是火狐仍然給我的問題,當我拖過文本項目,這裏有一個小提琴證明:http://jsfiddle.net/tusRy/6/
這是一個Firefox的錯誤或可在此與JS被馴服?還是有更強大的方法來執行所有這些?
謝謝!
UPDATE:將小提琴更新爲http://jsfiddle.net/tusRy/6/以減少混亂。解釋小提琴的預期行爲:
- 將一個文件拖到窗口中,並且p.target應該是「ENTER」彩色黃色。
- 將一個文件拖出窗口,p.target應該是「LEAVE」紅色。
- 在窗口中放置一個文件,並且p.target應該是「LEAVE」紅色。
在firefox中,當您將文件拖動到文本上時,會觸發LEAVE事件。
我已經通過使用覆蓋div來解決這個問題,按照http://jsfiddle.net/tusRy/7/但是我並不真的很高興這是解決方案,所以我會離開這個問題打開直到有更好的想法出現。 – DanH