javascript - Electron:将选项卡拖到另一个打开的窗口中
问题描述
我正在创建一个看起来类似于 google chrome 的电子应用程序,其中包含用于不同页面的多个动态选项卡。该应用程序还支持多个打开的窗口。我希望能够在这些窗口之间拖动标签。我已经知道如何使用 ipcRenderer 在我的窗口之间发送消息,但我遇到了一些障碍:
1) 我无法将 html 元素拖到窗口外。如何将选项卡(或看起来相同的东西)拖到窗口外?
我在原子论坛上找到了一个讨论,有人声称他们能够做到这一点,但没有详细说明如何做到这一点。他们声称“本机 HTML5 拖放与 IPC 消息传递相结合是解决方案”。其他人在下面链接了一个 GitHub 示例,但该示例已被删除。
2)如何检测标签何时被拖到另一个打开的窗口(鼠标在另一个窗口上释放)?
讨论再次建议我使用 IPC 消息传递来执行此操作,但我还没有找到一种方法来获取您释放鼠标的窗口的 id。
编辑:
我找到了问题 1 的解决方案。提到的讨论是正确的,使用默认的 HTML5 拖动行为能够创建我想要的效果。问题 2 仍然难倒我。我了解使用 IPC 消息提醒所有其他打开的窗口以准备传入拖动的概念,但我仍然不确定如何获取窗口的 id 以及您拖动到的位置,以便您可以将选项卡信息发送到正确的地方。
解决方案
我知道这有点老了。但不是将选项卡拖到新窗口,而是选项卡上带有 [发送到窗口] 的上下文菜单。
例如,使用 React(不是您必须这样做),您可以JSON.stringify
将用于呈现选项卡的数据发送到子窗口,JSON.parse
然后将其呈现在子窗口的新选项卡中。
不完全是拖动的效果,但最终结果相同。
对于窗口之间的通信: https ://medium.com/@kahlil/how-to-communicate-between-two-electron-windows-166fdbcdc469
推荐阅读
- android - kotlin中带有val的Gson序列化错误
- javascript - Uploadcollection发送文件但无法打开?
- javascript - 如何处理只点击一次
- 反应中的项目
- android - 如何使 AlertDialog 显示在屏幕边缘附近
- javascript - 如何在 typescript 2.9 中读取 HashMap
- java - Java 输入流加密
- mysql - 在 MySql (8.0.13) 中查找 max 和 second max 之间的差异,按列分组,而不使用 order by 和 limit 子句
- mysql - 如何使用正则表达式匹配数据库中的数据?
- powershell - 将输出重定向到 websocket 服务器
- c# - Entity Framework Core - 唯一约束