首页 > 解决方案 > Electron:将选项卡拖到另一个打开的窗口中

问题描述

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

1) 我无法将 html 元素拖到窗口外。如何将选项卡(或看起来相同的东西)拖到窗口外?

我在原子论坛上找到了一个讨论,有人声称他们能够做到这一点,但没有详细说明如何做到这一点。他们声称“本机 HTML5 拖放与 IPC 消息传递相结合是解决方案”。其他人在下面链接了一个 GitHub 示例,但该示例已被删除。

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

讨论再次建议我使用 IPC 消息传递来执行此操作,但我还没有找到一种方法来获取您释放鼠标的窗口的 id。

编辑:

我找到了问题 1 的解决方案。提到的讨论是正确的,使用默认的 HTML5 拖动行为能够创建我想要的效果。问题 2 仍然难倒我。我了解使用 IPC 消息提醒所有其他打开的窗口以准备传入拖动的概念,但我仍然不确定如何获取窗口的 id 以及您拖动到的位置,以便您可以将选项卡信息发送到正确的地方。

标签: javascriptelectron

解决方案


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

例如,使用 React(不是您必须这样做),您可以JSON.stringify将用于呈现选项卡的数据发送到子窗口,JSON.parse然后将其呈现在子窗口的新选项卡中。

不完全是拖动的效果,但最终结果相同。

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


推荐阅读