2013-05-29 144 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可以在两个窗口中运行,这会平滑所有的结果,但我猜不是。我只是不会做这个项目的拖累。我可以让用户单击第二个窗口中的一个元素,并立即显示在第一个窗口中。够好了。谢谢你看这个问题。

相关问题