0

PythonバックエンドとWebインターフェイスを備えたデスクトップソフトウェアを構築しています。現在、バックエンドを起動してから、ブラウザでインターフェイスを開く必要があります。誤ってページを更新した場合は、すべてクリアされます。私がやりたいのは、アプリケーションを起動し、フルスクリーンのブラウザウィンドウを(Chromeを使用して)表示することです。これは難しいことではありません。2つの質問があります:

  1. 更新を無効にできますか?
  2. Web UIを閉じたときに、プログラムを閉じることにフックすることはできますか?

更新

私が探しているのは、geckofxのようなものです。Chromeウェブページをデスクトップアプリに埋め込む方法。C#ではなくPythonを使用している場合を除きます

4

2 に答える 2

1

最初の質問は、JavaScriptを使用したf5の無効化とブラウザの更新の重複です。

2番目の質問については、構築しているアプリケーションの種類によって異なりますが、通常、答えはノーです。

JSを利用してクローズをキャッチし、たとえば、クローズする前にサービスに「終了」メッセージを送信できる場合、それは簡単です。ただし、クライアントがクローズをキャッチする方法がないため、それが機能しない場合がたくさんあります。

一方、クライアントとサービスの間の継続的な接続に依存できる場合(たとえば、WebSocketを使用する場合)、接続がダウンしたときに終了できます。しかし、通常、あなたはできません。

最後に、1つのプラットフォーム専用に何かを書いている場合は、OSレベルの情報を使用して、JSでは処理できないケースを処理できる可能性があります。(たとえば、OS Xでは、リスナーをデフォルトに接続して、 Chromeが終了するたびに通知を受け取ることができます。)ただし、通常、これに依存することはできません。また、可能であっても、 100%をカバーNSDistributedNotificationCenterできない場合がありますケース。

したがって、すべての「実際の」Webアプリがセッションの管理に使用するのと同じトリックを使用する必要があります。たとえば、クライアントは5分ごとにキープアライブを送信でき、サーバーは5分間リクエストを受け取らなかった場合に終了できます。(明示的な「終了」コマンドを使用することはできますが、常に受信することに依存することはできません。)これを行う方法についてさらに情報が必要な場合は、SOについて300の質問があります。

于 2013-02-28T01:37:23.103 に答える
1

Instead of embeding Chrome, you may embed only Webkit ( I don't know on Windows, but on Mac and Linux is easy).
Application logic seams to be on server side, and browser used only as interface. If that is the case, you may put „onbeforeunload” in body tag, and call a js function that send an ajax request to server to die.

于 2013-02-28T02:19:10.597 に答える