4

ユーザーが Web ブラウザのタブを閉じたかどうかを知る方法はありますか? 具体的には IE7 ですが、FireFox なども同様です。Web サイトを含む現在のタブが閉じた場合に、asp コードからこの状況を処理できるようにしたいと考えています。

4

7 に答える 7

6

onbeforeunload は、次のイベントでも呼び出されます -

* Close the current browser window.
* Navigate to another location by entering a new address or selecting a Favorite.
* Click the Back, Forward, Refresh, or Home button.
* Click an anchor that refers the browser to another Web page.
* Invoke the anchor.click method.
* Invoke the document.write method.
* Invoke the document.open method.
* Invoke the document.close method.
* Invoke the window.close method.
* Invoke the window.open method, providing the possible value _self for the window name.
* Invoke the window.navigate or NavigateAndFind method.
* Invoke the location.replace method.
* Invoke the location.reload method.
* Specify a new value for the location.href property.
* Submit a form to the address specified in the ACTION attribute via the INPUT type=submit control, or invoke the form.submit method.

そのため、ユーザーがタブまたはブラウザー ウィンドウを閉じたときにユーザーをログアウトしようとすると、リンクをクリックするかページを送信するたびにログアウトすることになります。

于 2010-11-30T22:26:42.370 に答える
2

「 onbeforeunload」イベントを添付します。ブラウザ/タブが閉じる直前にコードを実行できます。

于 2008-09-26T09:29:18.313 に答える
1

あなたなら、document.unloadはそれをしませんか?

于 2008-09-26T09:11:43.190 に答える
0

Santoshは正しいです。このイベントは、タブ/ブラウザの閉じるボタンをクリックするだけでなく、さらに多くのアクションでトリガーされます。ドキュメントの準備ができたときに次の関数を追加することで、onbeforeunloadアクションがトリガーされないようにするための小さなハックを作成しました。

       $(function () {     
        window.onbeforeunload = OnBeforeUnload;
            $(window).data('beforeunload', window.onbeforeunload);
            $('body').delegate('a', 'hover', function (event) {
                if (event.type === 'mouseenter' || event.type === "mouseover")
                    window.onbeforeunload = null;
                else
                    window.onbeforeunload = $(window).data('beforeunload');
            });
        });

また、Santoshによって言及されたイベントのいずれかをトリガーする前に、次の行を実行する必要があります。

window.onbeforeunload = null;

イベントをトリガーしたくない場合。

そして、これが最後のコードです。

    function OnBeforeUnload(oEvent) {   
            // return a string to show the warning message (not every browser will use this string in the dialog)
            // or run the code you need when the user closes your page  
        return "Are you sure you want to close this window?";       
    }
于 2012-03-29T07:08:42.360 に答える
0

Eran Galperin が提案したように、 を使用しますonbeforeunload。特に、文字列を返すと、その文字列が確認ダイアログに含まれ、ユーザーがページを離れるかどうかを選択できるようになります。各ブラウザーには、返される文字列の前後にテキストが含まれているため、さまざまなブラウザーでテストして、ユーザーに表示される内容を確認する必要があります。

于 2008-10-11T05:55:32.540 に答える
0

OPはWebページ自体のコンテキストから尋ねていると確信していますが、この質問に出くわしたFirefoxアドオン開発者は、TabCloseイベントを使用できます. https://developer.mozilla.org/en/Code_snippets/Tabbed_browser#Notification_when_a_tab_is_added_or_removed

于 2010-11-17T19:41:41.483 に答える
0

サーバー側でページがいつ閉じられたかを知る必要がある場合、最善の策は、ページから定期的にサーバーに ping を送信することです (XMLHttpRequestたとえば、 を使用)。ping が停止すると、ページが閉じられます。これは、ブラウザーがクラッシュした場合、終了した場合、またはコンピューターの電源がオフになった場合にも機能します。

于 2008-09-28T21:51:30.920 に答える