2013-05-29 2 views
2

У меня есть окно с некоторыми divs, которые можно перетаскивать. У меня также есть второе окно, которое я создал с window.open(), который имеет divs, которые перетаскиваются. Возможно ли теперь перетащить div из одного окна в другое?Перетаскивание divs из одного окна в другое

Благодаря

ответ

0

Я думаю, вы могли бы установить переменную «элемент сопротивления = истина» и сохранить содержание элемента где-то. Затем отбросьте его по подсказке в своем всплывающем окне.

+2

Вы уверены? можете ли вы предоставить демо? – Raptor

0

Что вы можете сделать - это перетащить, установить куки-файл и по мыши над целевым окном, проверить файлы cookie и имитировать перетащить.

2

Посмотрите на это 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 
0

Из ответов, предоставленных теперь я вижу, что перетаскивание между окнами действительно некрасиво. Вы должны в основном перенести состояние мыши из одного окна в другое и ввести элемент, который перетаскивается в DOM окна назначения. Я надеялся, что вокруг вас будет несколько jQuery, которые вы могли бы запустить в обоих окнах, которые могли бы сгладить все это, но я думаю, что нет. Я просто не буду делать перетаскивание в этом проекте. Я могу просто позволить пользователю щелкнуть элемент во втором окне и сразу же появиться в первом окне. Достаточно хорошо.Спасибо, что посмотрел на вопрос.

Смежные вопросы