根據瀏覽器history模擬瀏覽器後退按鈕顯隱問題

場景:在APP頁面開發中,有一個需求,作一個返回按鈕,實現的功能和瀏覽器的後退按鈕相同。瀏覽器

措施:具體思路以下:安全

          1.開始打開頁面時,瀏覽器的history.length爲1,按鈕隱藏;url

      2.當history.length>1時,點擊按鈕執行 history.go(-1);spa

   3.後退到歷史記錄棧中第一幀時,按鈕隱藏。出於瀏覽器安全性考慮,history中沒有給出屬性判斷其當前頁的位置,因此,在開始打開頁面,處於第一幀時,在當前url中添加參數,按鈕點擊事件觸發時,根據該參數可判斷是不是第一幀的位置。code

解釋:對象

一.history對象:blog

  屬性

  • history.length
  • history.state
  • history.scrollRestoration

  方法

  • history.back()
  • history.forward()
  • history.go()
  • history.pushState()
  • history.replaceState()

二.向當前url中追加參數事件

var newurl = updateQueryStringParameter(window.location.href, 'sp', '2');

window.history.replaceState({
    path: newurl
}, '', newurl);

function updateQueryStringParameter(uri, key, value) {
    if(!value) {
        return uri;
    }
    var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
    var separator = uri.indexOf('?') !== -1 ? "&" : "?";
    if (uri.match(re)) {
        return uri.replace(re, '$1' + key + "=" + value + '$2');
    }
    else {
        return uri + separator + key + "=" + value;
    }
}
相關文章
相關標籤/搜索