簡體   English   中英

試圖禁用瀏覽器的后退按鈕

[英]Trying to disable the browser's back button

我寫了兩個 HTML 文件:

  1. Login.html <a href = "Home.html">Next Page</a>
  2. 主頁.html`

 <html> <body> <a href = >Login.html>>Prev Page</a> </body> <script type = "text/javascript" > history.pushState("anything", "", "#1"); window.onhashchange = function (event) { window.location.hash = "a"; }; </script> </html>

` 我正在嘗試禁用瀏覽器的后退按鈕。 如果我在 chrome 上執行此代碼,它不會禁用后退按鈕,但如果我在 Home.html 頁面的控制台中運行history.state命令,然后單擊后退按鈕,則它會保留在同一頁面上(按預期工作)。 為什么這樣?

FOA,感謝大家的回答。

最后下面的代碼給了我解決方案:

 history.pushState(null, null, window.location.href); history.back(); window.onpopstate = () => history.forward();

您無法禁用瀏覽器的后退按鈕。 如果可以,那將是一個安全隱患,瀏覽器供應商很可能會尋求修復它。

覆蓋網絡瀏覽器的默認行為通常是一個壞主意。 出於安全原因,客戶端腳本沒有足夠的權限來執行此操作。

也很少有人問類似的問題,

如何防止退格鍵返回?

如何使用 JavaScript 阻止瀏覽器對退格按鈕的默認歷史后退動作?

您實際上無法禁用瀏覽器后退按鈕。 但是,您可以使用您的邏輯來實現魔術,以防止用戶導航回來,這會產生一種像被禁用的印象。 這是方法,請查看以下代碼段。

(function (global) { 

    if(typeof (global) === "undefined") {
        throw new Error("window is undefined");
    }

    var _hash = "!";
    var noBackPlease = function () {
        global.location.href += "#";

        // making sure we have the fruit available for juice (^__^)
        global.setTimeout(function () {
            global.location.href += "!";
        }, 50);
    };

    global.onhashchange = function () {
        if (global.location.hash !== _hash) {
            global.location.hash = _hash;
        }
    };

    global.onload = function () {            
        noBackPlease();

        // disables backspace on page except on input fields and textarea..
        document.body.onkeydown = function (e) {
            var elm = e.target.nodeName.toLowerCase();
            if (e.which === 8 && (elm !== 'input' && elm  !== 'textarea')) {
                e.preventDefault();
            }
            // stopping event bubbling up the DOM tree..
            e.stopPropagation();
        };          
    }

})(window);

這是純 JavaScript 編寫的,因此可以在大多數瀏覽器中使用。 它也會禁用退格鍵,但鍵將在輸入字段和文本區域內正常工作。

推薦設置:將此代碼段放在單獨的腳本中,並將其包含在您希望此行為的頁面上。 在當前設置中,它將執行 DOM 的 onload 事件,這是此代碼的理想入口點。

Working Demo link->  http://output.jsbin.com/yaqaho

HTML5 History API 使開發人員能夠在不刷新整個頁面的情況下修改網站的 URL。 這對於用 JavaScript 加載頁面的某些部分特別有用,這樣內容就明顯不同並且需要一個新的 URL。

您可以查看此鏈接它可能會有所幫助

https://css-tricks.com/using-the-html5-history-api/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM