Javascript 在浏览器窗口之间拖动内容

Javascript 在浏览器窗口之间拖动内容,javascript,web-applications,Javascript,Web Applications,这是一个很长的机会,我很确定这是不可能的,但我想我会问一下,以防有人知道一些我不知道的伏都教 在任何情况下,使用任何浏览器,即使需要某种插件,是否有可能将元素从一个浏览器窗口拖到另一个浏览器窗口?由于JavaScript的工作方式,很难将数据从一个窗口移到另一个窗口。即使您正在使用帧(在同一域上) 如果在一个帧中创建domeElement,则不允许将其添加到另一个帧的DOM中,因为它们不具有相同的祖先。类似地,如果在帧之间发送对象等,则instanceof检查将失败 不过,您可以模拟它,但这需要

这是一个很长的机会,我很确定这是不可能的,但我想我会问一下,以防有人知道一些我不知道的伏都教


在任何情况下,使用任何浏览器,即使需要某种插件,是否有可能将元素从一个浏览器窗口拖到另一个浏览器窗口?

由于JavaScript的工作方式,很难将数据从一个窗口移到另一个窗口。即使您正在使用帧(在同一域上)

如果在一个帧中创建
domeElement
,则不允许将其添加到另一个帧的DOM中,因为它们不具有相同的祖先。类似地,如果在帧之间发送对象等,则
instanceof
检查将失败


不过,您可以模拟它,但这需要两个窗口彼此非常同步(通过服务器?lag?)。如果你到达边缘后在窗口上结束拖动事件,让它向服务器发送一个信号,用适当的数据在另一个窗口上启动拖动启动事件,等等,你可以让它工作。

这有点离谱,但这里有一个令人讨厌的设置,可能需要一些调整

Flash有一个名为
LocalConnection
的类,它使用IPC与其他Flash实例通信。虽然这经常在同一页面上的Flash电影之间使用,但它在其他浏览器窗口中的Flash电影之间,甚至在其他浏览器中都可以使用。例如,您可以将Chrome页面上的Flash电影发送到internetexplorer页面上的Flash电影

现在,这个沟通渠道应该是你最需要的。流程应该类似于他的:

  • 在页面上检测开始拖动
  • 检测鼠标离开页面A
  • 广播事件1/2已发生的消息,以及描述正在拖动的对象的任何所需数据
  • 检测B页上的广播,并将其保留一段时间
  • 检测鼠标进入页面B
  • 在页面B上检测到鼠标
  • 对先前广播的数据进行操作

  • 不太好看,而且容易出错,但这取决于您对它的需求有多迫切。

    我不确定我是否能做到。我可以毫无问题地将firefox页面中的图像拖动到chrome中。@j08691,如果我理解正确,这与拖动文件有关。他想做的有点不同。@Brad-似乎有点模棱两可,不是吗?我想拖动页面的元素,例如HTML元素,比如div或其他东西。不是文本、图像或可以放在剪贴板上的东西。因此,如果我理解的话:一旦你的鼠标离开第一个没有鼠标的窗口,你就向服务器发送AJAX,并(例如通过Comet)告诉第二个窗口等待拖动。如果第二个窗口接收到鼠标悬停且鼠标按钮仍处于按下状态(我不确定您是否能检测到它仍处于按下状态!因此您可能需要假设),它会将其解释为拖动。此外,与服务器的通信告诉服务器正在拖动哪个元素,因此第二个窗口可以绘制它?出于可用性考虑,由于可能的延迟,我认为最好在第一个窗口上发布一个通知,说明系统准备在另一个窗口上接收拖动。第二个窗口准备就绪时,应显示一些视觉指示器,表明它已准备好接收拖动。然后用户可以成功地完成它。是。。这里的可用性将很难。有太多可能出错。