2013-02-28 13 views
0

我建立桌面软件与Python的后端和一个网络接口。目前,我必须启动后端,然后在浏览器中打开界面。如果我不小心刷新页面 - 那就清除所有内容!我想要做的是启动应用程序,并出现一个全屏浏览器窗口(使用Chrome) - 这应该不难。我有两个问题:Python的桌面软件与网络界面

  1. 可以刷新被禁用?
  2. 是否有可能钩到当Web UI关闭关闭我的程序?

更新

我正在寻找的是更多这样的:geckofx。将Chrome网页嵌入桌面应用中的一种方法。除了我使用Python,而不是C#

+0

你真的想开了Chrome浏览器,而不是用户的默认Web浏览器? – abarnert 2013-02-28 01:40:59

+0

@abarnert:这个软件只会用于我们的机构,所以是的,我们愿意限制浏览器以确保它的工作更一致 – Casebash 2013-02-28 01:49:14

回答

1

你的第一个问题是disable f5 and browser refresh using javascript一个DUP。

关于第二个问题,这取决于你正在构建什么样的应用,但通常,答案是否定的。

如果你可以依靠JS赶上和接近,例如发送“退出”消息到服务关闭之前,这很容易。但是,有很多情况下,这是行不通的,因为客户无法赶上收盘。

如果,另一方面,你可以依靠客户端和服务e.g之间的连续连接上,使用的WebSocket,你当连接出现故障可以直接退出。但通常情况下,你不能。

最后,如果你是一个平台专门写的东西,你可以使用OS级别的信息来处理案件JS不能。 (例如,在OS X,你可以附加一个侦听默认NSDistributedNotificationCenter并且被通知当Chrome退出。)但是总体来说,你不能靠这个,即使你可以,它可能仍然覆盖100 %的情况。

所以,你需要使用每一个“真实”的web应用程序使用管理会话同样的招数。例如,客户端可以每隔5分钟发送一次keepalive,如果服务器在5分钟内没有收到任何请求,则可以退出。 (你仍然可以有一个明确的“退出”命令,你不能总是接受它。)如果你想了解更多关于如何做到这一点的信息,那么关于它的SO可能有300个问题。

1

相反embeding Chrome浏览器,你可以只嵌入的Webkit(我不知道在Windows上,但Mac和Linux是容易)。
应用程序逻辑接口位于服务器端,浏览器仅用作接口。如果是这样的话,你可以在body标签中放入“onbeforeunload”,然后调用一个js函数来发送ajax请求到服务器去死。