濮阳杆衣贸易有限公司

主頁 > 知識庫 > pushState實現Ajax無刷新頁面切換

pushState實現Ajax無刷新頁面切換

熱門標簽:上海企業(yè)外呼系統(tǒng)價錢 電銷機器人 長春 立陶宛地圖標注 大眾點評400電話怎么申請 河間市地圖標注app 東平縣地圖標注app 地圖標注推銷坑人 怎樣在地圖標注文字 中國地圖標注不明確情況介紹表

前言

這樣的需求很常見:點擊頁碼局部更新頁面(非整體刷新),并且產生歷史管理。局部刷新很容易實現,ajax可以滿足我們的需要,但是這并不會產生歷史管理,好在html5給我們提供了幾個好用的api方便解決這個問題,見下文。

正文

一、API

1、pushState

pushState()有三個參數:一個狀態(tài)對象、一個標題(現在會被忽略),一個可選的URL地址。
state:與要跳轉到的URL對應的狀態(tài)信息。
title:空字符串(以后可能有用)。
url:要跳轉到的URL地址,不能跨域。

作用:將當前URL和history.state加入到history中,并用新的state和URL替換當前。不會造成頁面刷新。

2、replaceState

history.replaceState()操作類似于history.pushState(),不同之處在于replaceState()方法會修改當前歷史記錄條目而并非創(chuàng)建新的條目。

3、window.onpopstate

history.go和history.back(包括用戶按瀏覽器歷史前進后退按鈕)觸發(fā),并且頁面無刷的時候(由于使用pushState修改了history)會觸發(fā)popstate事件,事件發(fā)生時瀏覽器會從history中取出URL和對應的state對象替換當前的URL和history.state。通過event.state也可以獲取history.state。

二、實現

場景很簡單,點擊按鈕下面的div中出現不同的圖片及標題,使用ajax刷新,并且產生歷史管理。

p class="page">
  a href="javascript:;">[ span>1/span> ]/a>
  a href="javascript:;">[ span>2/span> ]/a>
  a href="javascript:;">[ span>3/span> ]/a>
  a href="javascript:;">[ span>4/span> ]/a>
/p>
div>
  img />
  p class="title">/p>
/div>

核心代碼

  function setUrl(page){
    var url = location.pathname + '?page=' + page;
    history.pushState({
      url : url
    },'',url);
  }
//每次點擊按鈕的時候就往歷史記錄里面增加一個條目

注意首次載入的時候需要首次載入替換一下歷史記錄

  (function(){
    //默認顯示第一頁
    var url = location.pathname + '?page=1';
    //修改當前的歷史記錄
    history.replaceState({
      url : url
    },'',url); 
  })()

監(jiān)聽window的popstage事件,事件發(fā)生時取到當前歷史對應的頁碼,然后執(zhí)行ajax

  window.addEventListener('popstate',function(){
    var page = getPage();
    xhr(page);
  })

大體的骨架就是這樣。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • pushState、replaceState、onpopstate 實現Ajax頁面的前進后退刷新
  • 使用Yii整合的pjax(pushstate+ajax)實現無刷新加載頁面
  • 使用ajax和history.pushState無刷新改變頁面URL示例
  • 使用ajax實現無刷新改變頁面內容和地址欄URL
  • 基于iframe實現類似于ajax的頁面無刷新
  • ajax頁面無刷新 IE下遭遇Ajax緩存導致數據不更新的問題
  • Ajax無刷新Url提交頁面
  • JS+Ajax+Jquery實現頁面無刷新分頁以及分組 超強的實現
  • PHP Ajax實現頁面無刷新發(fā)表評論
  • PHP Ajax實現頁面無刷新發(fā)表評論

標簽:益陽 銅川 遼寧 營口 內江 本溪 四川 玉樹

巨人網絡通訊聲明:本文標題《pushState實現Ajax無刷新頁面切換》,本文關鍵詞  pushState,實現,Ajax,無,刷新,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pushState實現Ajax無刷新頁面切換》相關的同類信息!
  • 本頁收集關于pushState實現Ajax無刷新頁面切換的相關信息資訊供網民參考!
  • 推薦文章
    观塘区| 晋中市| 金川县| 交口县| 渭南市| 哈密市| 黄山市| 和林格尔县| 蒙阴县| 罗源县| 乳源| 齐河县| 天峻县| 德州市| 乐昌市| 广西| 永泰县| 沅江市| 九寨沟县| 南通市| 舞阳县| 思南县| 珠海市| 佛山市| 黄山市| 冕宁县| 衡山县| 衡阳县| 兴隆县| 大城县| 施秉县| 清丰县| 运城市| 棋牌| 浦县| 兖州市| 米林县| 石嘴山市| 东辽县| 句容市| 枞阳县|