2013-05-29 205 views

回答

0

我想你可以設置一個變量「是拖動項目= true」,並在一些地方保存的項目內容。然後將它放在彈出窗口中的鼠標上。

+2

你確定嗎?你能提供演示嗎? – Raptor

0

你可以做的就是拖動,設置一個cookie並將鼠標移到目標窗口上,檢查cookie和模擬的拖動。

2

查看此tutorial的DnD部分。

要實現此目的,可以傳遞發送和接收窗口都可以讀取的臨時值。它可能是一個cookie,或者更好的想法可能是使用localStorage,因爲有些人自願阻止cookie以獲得更多隱私。

使用Modernizr的回退測試,它可能是這樣的:

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"; 
} 

現在,當鼠標進入另一個窗口時,您可以檢查該項是否爲s直到通過訪問localStorage進行拖動(或者如果不可用,則爲髒Cookie)。

我能想到的唯一問題是當用戶在這些窗口之間釋放鼠標按鈕時。這可能是一個問題,因爲該項目將被視爲拖動,但不能釋放未按下的按鈕。有沒有人知道一個竅門,即使它沒有觸發事件,也要檢查在進入窗口時是否仍然按下鼠標按鈕?

與此同時,接收窗口中的點擊事件可以簡單地檢查它是否仍在拖動,然後刪除項目並移除標誌。


UPDATE:關於mentionned問題,挖一點,做一些測試與它似乎既不mouseovermousemove當鼠標按鍵仍然按下觸發(至少在Chrome在我的測試中事件發生之後已被製成)。

考慮到這一點,我認爲最好的方式來拖動和兩個窗口之間的落差來切換它:

Click --> Drag is started 

    Click again --> Drop the item 
0

從提供我現在可以看到的答案是窗口之間拖動是真的醜陋。您必須基本上將鼠標狀態從一個窗口轉移到另一個窗口,並將正在拖動的元素插入到目標窗口的DOM中。我希望有一些jQuery可以在兩個窗口中運行,這會平滑所有的結果,但我猜不是。我只是不會做這個項目的拖累。我可以讓用戶單擊第二個窗口中的一個元素,並立即顯示在第一個窗口中。夠好了。謝謝你看這個問題。

相關問題