ホームページ > ウェブフロントエンド > jsチュートリアル > ブラウザのリロードを妨げずにブラウザでのユーザーの「戻る」ボタンのクリックを検出する方法

ブラウザのリロードを妨げずにブラウザでのユーザーの「戻る」ボタンのクリックを検出する方法

Patricia Arquette
リリース: 2024-10-22 14:41:48
オリジナル
291 人が閲覧しました

How to Detect User's Back Button Click in Browsers Without Browser Reload Interference?

ブラウザでのユーザーの戻るボタンのクリックを検出する

戻るボタンのクリックを検出しようとする場合、開発者は多くの場合 window.onbeforeunload イベント リスナーに依存します。ただし、このイベントは戻るボタンのクリックだけでなくブラウザのリロードでもトリガーされるため、誤解を招く可能性があります。

ブラウザのリロード干渉を伴わない戻るボタンのクリックの検出

の処理誤検知なしで戻るボタンのクリックを確認するには、カスタマイズされたアプローチの使用を検討してください:

  1. 履歴の変更:

    • ページの読み込み時に、 History.pushState API が利用可能です。
    • サポートされている場合は、history.pushState を使用してランダムな状態を履歴にプッシュします。
    • 戻るボタンと進むボタンの遷移を処理するために onpopstate イベント リスナーを定義します。
  2. ハッシュベースのアプローチ:

    • history.pushState がサポートされていない場合は、ハッシュ変更イベント (window.onhashchange) を使用します。 .
    • 初期ハッシュ値を設定し、ハッシュ変更時にランダムでないハッシュ値をチェックします。
    • フラグを使用して、ユーザーが開始したハッシュ変更のみが「戻る」ボタン ロジックをトリガーするようにします。ブラウザのリロードを無視します。

実装

<code class="javascript">window.onload = function () {
    if (typeof history.pushState === "function") {
        history.pushState("jibberish", null, null);
        window.onpopstate = function () {
            history.pushState('newjibberish', null, null);
            // Handle back button click here
        };
    }
    else {
        var ignoreHashChange = true;
        window.onhashchange = function () {
            if (!ignoreHashChange) {
                ignoreHashChange = true;
                window.location.hash = Math.random();
                // Handle back button click here
            }
            else {
                ignoreHashChange = false;
            }
        };
    }
}</code>
ログイン後にコピー

互換性

このアプローチChrome と Firefox で効果的に動作することが報告されています。

以上がブラウザのリロードを妨げずにブラウザでのユーザーの「戻る」ボタンのクリックを検出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート