电子:将标签拖到另一个打开的窗口

时间:2018-06-13 01:49:25

标签: javascript electron

我正在创建一个类似于谷歌浏览器的电子应用程序,其中包含针对不同页面的多个动态选项卡。该应用程序还支持多个打开的窗口。我希望能够在这些窗口之间拖动标签。我已经知道如何使用ipcRenderer在我的窗口之间发送消息,但我遇到了一些障碍:

1)我无法在窗口外拖动html元素。如何在窗口外拖动标签(或看起来相同的东西)?

我在原子论坛上找到discussion,有人声称他们能够实现这一目标,但没有详细说明如何做到这一点。他们声称"原生HTML5拖放与IPC消息传递相结合是解决方案"。其他人链接下面的GitHub示例,但此后的示例已被删除。

2)如何检测标签何时被拖到另一个打开的窗口上(鼠标在其他窗口上释放)?

讨论再次建议我使用IPC消息来实现这一点,但我还没有找到一种方法来获取释放鼠标的窗口的ID。

编辑:

我找到了问题1的解决方案。上述讨论是正确的,使用default HTML5 dragging behavior能够创建我想要的效果。问题2仍然让我感到困惑。我理解使用IPC消息警告所有其他打开的窗口以准备传入拖动的概念,但我仍然不确定如何获取窗口的ID和拖动到它的位置,以便您可以将选项卡信息发送到正确的地方。

1 个答案:

答案 0 :(得分:1)

我知道这有点老了。但与其将选项卡拖动到新窗口,不如将选项卡上带有[发送至窗口]的上下文菜单。

例如,使用React(并非必须如此),您可以JSON.stringify渲染标签时使用的数据,将其发送到子窗口,JSON.parse并进行渲染在子窗口的新标签中。

拖动效果不尽相同,最终结果相同。

对于Windows之间的通信: https://medium.com/@kahlil/how-to-communicate-between-two-electron-windows-166fdbcdc469