Посмотрите на это tutorial для части DnD.
Для этого можно передать временное значение, которое может считывать окно отправки и получения. Это может быть файл cookie, или лучшая идея может заключаться в использовании localStorage, если он доступен, поскольку некоторые люди добровольно блокируют файлы cookie для большей конфиденциальности.
Использование тест резервного Modernizr «s, он мог выглядит следующим образом:
if (Modernizr.draganddrop) {
// add drag and drop support
} else {
// custom drag and drop support or suggest the user to get a real browser (if possible)
}
Всякий раз, когда сопротивление запускается:
if (Modernizr.localstorage) {
window.localStorage['item_1_drag_started'] = true;
} else {
document.cookie = "item_1_drag_started=1";
}
Затем, когда перетаскивание над/мышь вверх:
if (Modernizr.localstorage) {
delete window.localStorage['item_1_drag_started'];
} else {
document.cookie = "item_1_drag_started=0";
}
Теперь, когда мышь входит в другое окно, вы можете проверить, был ли этот элемент до перетаскивания путем доступа к localStorage (или к грязному файлу cookie, если он недоступен).
Единственная проблема, о которой я могу думать, это когда пользователь отпускает кнопку мыши между этими окнами. Это может быть проблемой, поскольку элемент будет считаться перетаскиванием, но вы не можете отпустить кнопку, которая не нажата. Кто-нибудь знает о трюке, чтобы проверить, нажата ли кнопка мыши при входе в окно, даже если оно не активировало событие?
В то же время событие click в окне приема может просто проверить, по-прежнему ли оно перетаскивается, а затем удалить элемент и удалить флаг.
UPDATE: Относительно упоминалось вопрос, после того, как рыть немного и делать некоторые тест с событиями, кажется, что ни mouseover
или mousemove
обжигают при нажатии кнопки мыши все еще нажата (по крайней мере, в Chrome, где мои тесты были сделаны).
Имея это в виду, я думаю, что лучший подход для перетаскивания между двумя окнами на тумблер это:
Click --> Drag is started
Click again --> Drop the item
Вы уверены? можете ли вы предоставить демо? – Raptor