我正在构建带有 Python 后端和 Web 界面的桌面软件。目前,我必须启动后端,然后在浏览器中打开界面。如果我不小心刷新了页面 - 那么一切都会清除!我想做的是启动应用程序并出现一个全屏浏览器窗口(使用 Chrome)——这应该不难。我有两个问题:
- 可以禁用刷新吗?
- 关闭 Web UI 时是否可以关闭我的程序?
更新:
我正在寻找的更像是这样的:geckofx。一种在桌面应用程序中嵌入 Chrome 网页的方法。除了我使用 Python 而不是 C#
我正在构建带有 Python 后端和 Web 界面的桌面软件。目前,我必须启动后端,然后在浏览器中打开界面。如果我不小心刷新了页面 - 那么一切都会清除!我想做的是启动应用程序并出现一个全屏浏览器窗口(使用 Chrome)——这应该不难。我有两个问题:
更新:
我正在寻找的更像是这样的:geckofx。一种在桌面应用程序中嵌入 Chrome 网页的方法。除了我使用 Python 而不是 C#
您可以只嵌入 Webkit,而不是嵌入 Chrome(我不知道在 Windows 上,但在 Mac 和 Linux 上很容易)。
应用程序逻辑接缝在服务器端,浏览器仅用作界面。如果是这种情况,你可以在body标签中加入“onbeforeunload”,然后调用一个js函数向服务器发送ajax请求就死掉了。
您的第一个问题是使用 javascript 禁用 f5 和浏览器刷新。
对于您的第二个问题,这取决于您正在构建什么样的应用程序,但一般来说,答案是否定的。
如果您可以依靠 JS 来捕捉关闭,例如,在关闭之前向服务发送“退出”消息,那很容易。但是,在很多情况下这不起作用,因为客户无法赶上收盘价。
另一方面,如果您可以依赖客户端和服务之间的持续连接(例如,使用 WebSocket),您可以在连接断开时退出。但通常,你不能。
最后,如果您正在为一个平台编写一些东西,您也许可以使用操作系统级别的信息来处理 JS 无法处理的情况。(例如,在 OS X 上,您可以在默认情况下附加一个侦听器,NSDistributedNotificationCenter
并在 Chrome 退出时收到通知。)但通常,您不能依赖此,即使可以,它可能仍然无法覆盖 100%案例。
因此,您需要使用每个“真实”网络应用程序用于管理会话的相同技巧。例如,客户端可以每5分钟发送一次keepalive,如果5分钟内没有收到任何请求,服务器可以退出。(你仍然可以有一个明确的“退出”命令,你不能总是依赖它。)如果你想了解更多关于如何做到这一点的信息,可能有 300 个关于它的问题。