3

ブラウザの閉じるボタンがクリックされたことをどのように識別できますか?

4

8 に答える 8

5

JavaScript イベント リファレンスから、最も近い一致は OnUnload イベントのようです。ただし、これはページから離れた場所への移動もキャッチします (したがって、ユーザーが実際にリンクをクリックした場合に関数を実行する必要はありません)。

サーバーがブラウザ ウィンドウが閉じられたというメッセージを受信するという保証はありません。たとえば、小さなポップアップ ウィンドウを作成するという古い方法は、最新のブラウザのほとんどでブロックされます。AJAX を使用しても機能する場合がありますが、接続を試行する前にブラウザー ウィンドウが閉じる場合があります。

于 2008-11-04T06:59:44.823 に答える
3

これは:

$(window).unload( function () { alert("Bye now!"); } );

助けます ?

ただし、jQueryにあります。

ただし、 Demoli によって提供されたリンクを確認する必要があります。この特定の方法 (およびその欠点) に関する詳細情報があります。

編集:リンクを追加しました。

于 2008-11-04T06:58:47.320 に答える
2

ブラウザには閉じるイベントがないため、ユーザーがいつブラウザを閉じたかを実際に知ることはできません。このスレッドにはいくつかの潜在的な回避策があります

何を達成しようとしているのかをお知らせいただければ、別の方法があるかもしれません

于 2008-11-04T06:55:03.553 に答える
1

onbeforeunloadではなく、を使用する必要がありますonunload。IE 7 (およびおそらく他のブラウザー) は、イベントの発生に関して 100% 信頼できるわけではありませんunloadが、常にbeforeunloadイベントを発生させるようです。

例えば:

window.onbeforeunload=function(){}

または、prototype.js を使用している場合:

Event.observe(window, 'beforeunload', function(){});
于 2008-11-04T16:07:24.140 に答える
1

これはハックですが、私にはうまくいくようです。IE固有のものかもしれません。私はIEのみの環境向けにコーディングしています。

<body onunload="if(self.screenTop>9000){unloadFunction();}">

私のunloadFunctionがユーザーのセッションを強制終了するポップアップウィンドウを開くことを追加するために編集されました。閉じられたページ自体では何もできません。もう閉まってるから!;)

于 2008-11-04T20:06:55.763 に答える
0

私は northsouthwhat に同意しますが、 onbeforeunload を使用したいすべてのブラウザーでサポートされていない可能性があることに注意してください。

于 2008-11-04T17:57:14.417 に答える
0

サーバーを数秒ごとから数分ごとに定期的にポーリングする ajax 呼び出しをセットアップし (必要な時間の精度に応じて)、サーバー側の最終ヒット時間を追跡できます。完全に正確ではありませんが (たとえば、ネットワークの問題により誤検知が発生する可能性があります)、要件によってはオプションになる場合があります。

于 2008-11-04T07:51:35.280 に答える
0

通常、ユーザーがページを離れる (アンロード?) ときに発生するイベントがあります。これはブラウザー固有の場合があります。

関連するウィンドウが閉じられた後にウィンドウ オブジェクトに設定されるプロパティ window.closed もあります。これは通常、ポップアップ ウィンドウへの参照がある場合に使用されます。

「closed」プロパティが設定される前または後に unload イベントが発生するかどうかはわかりません。実験する必要があります。

閉じたウィンドウと別のサイトに移動したブラウザを区別できない場合があります。

于 2008-11-04T07:00:12.433 に答える