我建立桌面軟件與Python的後端和一個網絡接口。目前,我必須啓動後端,然後在瀏覽器中打開界面。如果我不小心刷新頁面 - 那就清除所有內容!我想要做的是啓動應用程序,並出現一個全屏瀏覽器窗口(使用Chrome) - 這應該不難。我有兩個問題:Python的桌面軟件與網絡界面
- 可以刷新被禁用?
- 是否有可能鉤到當Web UI關閉關閉我的程序?
更新:
我正在尋找的是更多這樣的:geckofx。將Chrome網頁嵌入桌面應用中的一種方法。除了我使用Python,而不是C#
我建立桌面軟件與Python的後端和一個網絡接口。目前,我必須啓動後端,然後在瀏覽器中打開界面。如果我不小心刷新頁面 - 那就清除所有內容!我想要做的是啓動應用程序,並出現一個全屏瀏覽器窗口(使用Chrome) - 這應該不難。我有兩個問題:Python的桌面軟件與網絡界面
更新:
我正在尋找的是更多這樣的:geckofx。將Chrome網頁嵌入桌面應用中的一種方法。除了我使用Python,而不是C#
你的第一個問題是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個問題。
相反embeding Chrome瀏覽器,你可以只嵌入的Webkit(我不知道在Windows上,但Mac和Linux是容易)。
應用程序邏輯接口位於服務器端,瀏覽器僅用作接口。如果是這樣的話,你可以在body標籤中放入「onbeforeunload」,然後調用一個js函數來發送ajax請求到服務器去死。
你真的想開了Chrome瀏覽器,而不是用戶的默認Web瀏覽器? – abarnert 2013-02-28 01:40:59
@abarnert:這個軟件只會用於我們的機構,所以是的,我們願意限制瀏覽器以確保它的工作更一致 – Casebash 2013-02-28 01:49:14