ホームページ > ウェブフロントエンド > jsチュートリアル > 異なるブラウザ間でブラウザの戻るボタンの押下を確実に検出するにはどうすればよいですか?

異なるブラウザ間でブラウザの戻るボタンの押下を確実に検出するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-17 03:46:24
オリジナル
115 人が閲覧しました

How Can I Reliably Detect Browser Back Button Presses Across Different Browsers?

ブラウザ全体でのブラウザの「戻る」ボタンのイベント検出

ブラウザの「戻る」ボタンの動作の検出には、非同期の性質があるため課題が生じます。 window.onhashchange を利用するなど、いくつかの方法は存在しますが、ハッシュ変更をトリガーするページ内要素と実際の戻るボタンの押下を区別できません。

ページ内の戻るボタンの使用を強制する

ハッシュ ナビゲーションに依存するシングルページ アプリケーションでは、戻るボタンの機能を規制することが重要です。ハッシュを変更するページ内の戻るボタンを使用することで、ナビゲーションの制御を維持できます。

ブラウザの戻るボタンの押下を検出する

ブラウザの戻るボタン イベントを正確に検出するにはでは、マウスホバーを使用したクロスプラットフォームのアプローチを検討し、ドキュメント上でイベントを残します。

document.onmouseover = function() {
    // User's cursor is within the document area
    window.innerDocClick = true;
}

document.onmouseleave = function() {
    // User's cursor has exited the document area
    window.innerDocClick = false;
}

window.onhashchange = function() {
    if (window.innerDocClick) {
        // Navigation triggered by in-page action
    } else {
        // Browser back button was pressed
    }
}
ログイン後にコピー

このメソッドは、カーソルがドキュメント領域内にあるかどうかを示すブール フラグ (window.innerDocClick)。フラグが false のときにハッシュが変更された場合は、ブラウザーの「戻る」ボタンを押すことを提案します。

Backspace キーが Back イベントをトリガーしないようにします

Backspace キーがバックスペース キーをアクティブにしないようにするには、 [戻る] ボタンを使用するには、次の jQuery コードを使用します:

$(function(){
    var rx = /INPUT|SELECT|TEXTAREA/i;
    $(document).bind("keydown keypress", function(e){
        if( e.which == 8 ){ // 8 == backspace
            if(!rx.test(e.target.tagName) || e.target.disabled || e.target.readOnly ){
                e.preventDefault();
            }
        }
    });
});
ログイン後にコピー

このコードは、バックスペースの押下をインターセプトし、バックスペースの押下を防ぎます。フォーカスが入力フィールドにない場合に戻るボタン イベントをトリガーします。

以上が異なるブラウザ間でブラウザの戻るボタンの押下を確実に検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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