最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pushState實(shí)現(xiàn)Ajax無刷新頁面切換

 更新時(shí)間:2016年11月21日 09:12:47   作者:當(dāng)時(shí)惘然  
這篇文章主要介紹了pushState實(shí)現(xiàn)Ajax無刷新頁面切換的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前言

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

正文

一、API

1、pushState

pushState()有三個(gè)參數(shù):一個(gè)狀態(tài)對(duì)象、一個(gè)標(biāo)題(現(xiàn)在會(huì)被忽略),一個(gè)可選的URL地址。
state:與要跳轉(zhuǎn)到的URL對(duì)應(yīng)的狀態(tài)信息。
title:空字符串(以后可能有用)。
url:要跳轉(zhuǎn)到的URL地址,不能跨域。

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

2、replaceState

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

3、window.onpopstate

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

二、實(shí)現(xiàn)

場(chǎng)景很簡(jiǎn)單,點(diǎn)擊按鈕下面的div中出現(xiàn)不同的圖片及標(biāo)題,使用ajax刷新,并且產(chǎn)生歷史管理。

<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);
  }
//每次點(diǎn)擊按鈕的時(shí)候就往歷史記錄里面增加一個(gè)條目

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

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

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

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

大體的骨架就是這樣。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

呼图壁县| 张北县| 韩城市| 博湖县| 寿宁县| 邮箱| 安多县| 合川市| 财经| 濮阳市| 霸州市| 百色市| 瑞昌市| 惠水县| 彭水| 嵊泗县| 银川市| 辽宁省| 高台县| 汉中市| 龙江县| 肥西县| 怀集县| 共和县| 顺义区| 永仁县| 富蕴县| 甘谷县| 桑植县| 济南市| 横峰县| 宿州市| 成安县| 三穗县| 长阳| 来凤县| 澎湖县| 固始县| 师宗县| 金溪县| 游戏|