亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法在javascript中捕獲后退按鈕事件?

有沒有辦法在javascript中捕獲后退按鈕事件?

繁星coding 2019-09-02 15:44:58
當只有位置哈希改變時,有沒有辦法在javascript中響應后退按鈕被擊中(或按下退格鍵)?也就是說當瀏覽器沒有與服務器通信或重新加載頁面時。
查看完整描述

3 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

使用hashchange活動:


window.addEventListener("hashchange", function(e) {

  // ...

})

如果您需要支持舊版瀏覽器,請查看Modernizr的HTML5 Cross Browser Polyfills維基頁面中的“ hashChange事件”部分。



查看完整回答
反對 回復 2019-09-02
?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

我已經創建了一個可能對某些人有用的解決方案。只需在頁面上包含代碼,您就可以編寫自己的函數,單擊后退按鈕時將調用該函數。


我已經在IE,FF,Chrome和Safari中進行了測試,并且都在運行。我已經基于iframe工作的解決方案,而不需要在IE和FF中進行常量輪詢,但是,由于其他瀏覽器的限制,位置散列在Safari中使用。


查看完整回答
反對 回復 2019-09-02
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

我做了一個有趣的黑客來解決這個問題讓我滿意。我有一個動態加載內容的AJAX站點,然后修改window.location.hash,我有代碼在$(document).ready()上運行來解析哈希并加載相應的部分。問題是我對我的部分加載導航代碼感到非常滿意,但是想添加一種攔截瀏覽器后退和前進按鈕的方法,這會改變窗口位置,但不會干擾我操作當前頁面加載例程window.location,以及以固定間隔輪詢window.location是不可能的。


我最終做的是創建一個對象:


var pageload = {

    ignorehashchange: false,

    loadUrl: function(){

        if (pageload.ignorehashchange == false){

            //code to parse window.location.hash and load content

        };

    }

};

然后,我在我的站點腳本中添加了一行來pageload.loadUrl在hashchange事件上運行該函數,如下所示:


window.addEventListener("hashchange", pageload.loadUrl, false);

然后,任何時候我想修改window.location.hash不觸發此頁面加載例程,我只需在每window.location.hash =行之前添加以下行:


pageload.ignorehashchange = true;

然后在每個哈希修改行之后的下一行:


setTimeout(function(){pageload.ignorehashchange = false;}, 100);

所以現在我的部分加載例程通常在運行,但是如果用戶點擊“后退”或“前進”按鈕,則會解析新位置并加載相應的部分。


查看完整回答
反對 回復 2019-09-02
  • 3 回答
  • 0 關注
  • 476 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號