1. 程式人生 > >切換tab頁,頁面區域性重新整理,位址列路徑修改

切換tab頁,頁面區域性重新整理,位址列路徑修改

  • 需求:
    做一個類似百度這種,切換tab,頁面展示區域性重新整理的效果。
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 思路:
    tab展示的切換,使用display控制。但是,如果頁面重新整理,則無法保留顯示在tab2的效果,因而在位址列加引數標記。但如果用a的href或者location.href 均會將整個頁面重新整理,體驗很差,故需只修改位址列路徑,但不重新整理頁面。
  • 解決方案:
    在切換tab時,
    先處理隱藏顯示區域的內容,
    再將位址列的內容改掉,如下:
    window.history.replaceState(null,null,'./tabDemo.html?tab=tab_a');

demo 核心js:

		$('.search_bar .search_tab').click(function(){
            $('.search_bar .search_tab').removeClass('active');
            $(this).addClass('active');
            if(this.id == 'tabB'){
                $('.contentA').hide();
                $('.contentB').show();  
                window.history.replaceState(null,null,'./tabDemo.html?tab=tab_b');      
            }else{
                $('.contentA').show();
                $('.contentB').hide(); 
                window.history.replaceState(null,null,'./tabDemo.html?tab=tab_a');
            }
        });

補充關於pushState 的知識:
history物件的方法。
history.pushState():
history.pushState 方法接受三個引數,依次為:

  • state:一個與指定網址相關的狀態物件,popstate事件觸發時,該物件會傳入回撥函式。如果不需要這個物件,此處可以填null。
  • title:新頁面的標題,但是所有瀏覽器目前都忽略這個值,因此這裡可以填null。
  • url:新的網址,必須與當前頁面處在同一個域。瀏覽器的位址列將顯示這個網址。
    pushState方法不會觸發頁面重新整理,只是導致history物件發生變化,位址列會有反應。

history.replaceState():


history.replaceState方法的引數與pushState方法一模一樣,區別是它修改瀏覽歷史中當前紀錄。