首頁 > web前端 > js教程 > 如何可靠地偵測瀏覽器後退按鈕點擊並強制執行頁內導覽?

如何可靠地偵測瀏覽器後退按鈕點擊並強制執行頁內導覽?

Mary-Kate Olsen
發布: 2024-12-13 10:15:11
原創
500 人瀏覽過

How Can I Reliably Detect Browser Back Button Clicks and Enforce In-Page Navigation?

偵測瀏覽器後退按鈕點擊並強制執行頁內導覽的跨瀏覽器技術

偵測瀏覽器後退按鈕點擊並強制使用使用井號標籤(#)系統的頁內導覽系統可以是

瀏覽器後退按鈕偵測

單獨使用window.onhashchange 的傳統方法並不可靠,因為它也會在頁內元素更改哈希時觸發。為了解決這個問題,採用了利用 document.onmouseover、document.onmouseleave 和布林標誌 (window.innerDocClick) 的新技術。當使用者滑鼠進入文件區域時,window.innerDocClick 設定為 true,當滑鼠離開時,設定為 false。這允許使用以下window.onhashchange 處理程序:

window.onhashchange = function() {
    if (window.innerDocClick) {
        window.innerDocClick = false;
    } else {
        if (window.location.hash != '#undefined') {
            goBack();
        } else {
            history.pushState("", document.title, window.location.pathname);
            location.reload();
        }
    }
}
登入後複製

頁內後退按鈕強制

僅透過頁內後退按鈕控制後退導航,歷史數組(window .location.lasthash) 用於在使用者瀏覽介面時儲存先前的雜湊值。頁內後退按鈕功能 (goBack) 使用此陣列導覽至上一頁。

function goBack() {
    window.location.hash = window.location.lasthash[window.location.lasthash.length-1];
    window.location.lasthash.pop();
}
登入後複製

抑制退格鍵

以防止使用者使用退格鍵觸發後退按鈕,可以加入以下程式碼片段:

$(function(){
    /*
     * this swallows backspace keys on any non-input element.
     * stops backspace -> back
     */
    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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板