Jquery局部刷新插件Pjax

Pjax是對Ajax + pushState的封裝忆畅,可以實現(xiàn)網(wǎng)頁的ajax加載填抬,改變網(wǎng)頁URL卻不會刷新網(wǎng)頁整體本身辈挂,避免重新加載網(wǎng)頁中大部分的控件和插件丁频。
pushState的功能具體來說就是修改url而頁面無跳轉(zhuǎn),并且該url會被存放在歷史記錄中燃少。

    window.history.pushState(state, title, url);

GitHub傳送門:
https://github.com/defunkt/jquery-pjax/blob/master/jquery.pjax.js

pjax執(zhí)行流程:

  • 1.觸發(fā)事件后執(zhí)行相關(guān)語句或者函數(shù)局蚀,包裝成為ajax向服務(wù)器請求數(shù)據(jù)掉缺;

      options = $.extend(true, {}, $.ajaxSettings, pjax.defaults, options)
      pjax.options = optionsvar xhr = pjax.xhr = $.ajax(options)
    
  • 2.給請求附加X-PJAX標識仔戈,服務(wù)器只會返回Container中的內(nèi)容:

      xhr.setRequestHeader('X-PJAX', 'true')
      xhr.setRequestHeader('X-PJAX-Container', context.selector)
    
  • 3.更新Container的內(nèi)容蹬癌;

      function pjaxReload(container, options)
      {  var defaults = 
      {    url: window.location.href,
          push: false,
          replace: true,
          scrollTo: false
      }
      return pjax($.extend(defaults, optionsFor(container, options)))}
    
  • 4.pushState 方法把當前的頁面的地址亏吝、標題等信息放入瀏覽器歷史記錄中

      if (xhr.readyState > 0)
      { if (options.push && !options.replace) 
      {      // Cache current container element before replacing it
            cachePush(pjax.state.id, cloneContents(context))
            window.history.pushState(null, "", options.requestUrl)
      }
      fire('pjax:start', [xhr, options])
      fire('pjax:send', [xhr, options])
      }
      return pjax.xhr
      }
    
  • 5.利用replaceState更新瀏覽器地址概疆;
    function locationReplace(url)
    { window.history.replaceState(null, "", pjax.state.url)
    window.location.replace(url)
    }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挫酿,一起剝皮案震驚了整個濱河市署穗,隨后出現(xiàn)的幾起案子宿稀,更是在濱河造成了極大的恐慌趁舀,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祝沸,死亡現(xiàn)場離奇詭異矮烹,居然都是意外死亡,警方通過查閱死者的電腦和手機罩锐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門奉狈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人涩惑,你說我怎么就攤上這事仁期。” “怎么了竭恬?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵跛蛋,是天一觀的道長。 經(jīng)常有香客問我痊硕,道長赊级,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任岔绸,我火速辦了婚禮理逊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘亭螟。我一直安慰自己挡鞍,他們只是感情好,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布预烙。 她就那樣靜靜地躺著墨微,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扁掸。 梳的紋絲不亂的頭發(fā)上翘县,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天最域,我揣著相機與錄音,去河邊找鬼锈麸。 笑死镀脂,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的忘伞。 我是一名探鬼主播薄翅,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼氓奈!你這毒婦竟也來了翘魄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤舀奶,失蹤者是張志新(化名)和其女友劉穎暑竟,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體育勺,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡但荤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了涧至。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腹躁。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖南蓬,靈堂內(nèi)的尸體忽然破棺而出潜慎,到底是詐尸還是另有隱情,我是刑警寧澤蓖康,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布铐炫,位于F島的核電站,受9級特大地震影響蒜焊,放射性物質(zhì)發(fā)生泄漏倒信。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一泳梆、第九天 我趴在偏房一處隱蔽的房頂上張望鳖悠。 院中可真熱鬧,春花似錦优妙、人聲如沸乘综。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卡辰。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間九妈,已是汗流浹背反砌。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留萌朱,地道東北人宴树。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像晶疼,于是被迫代替她去往敵國和親酒贬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式翠霍。設(shè)計者無需花費時間糾纏JS復雜的高級特性同衣。 1....
    LaBaby_閱讀 1,167評論 0 1
  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計者無需花費時間糾纏JS復雜的高級特性壶运。 1....
    LaBaby_閱讀 1,330評論 0 2
  • 大家好耸携,我是IT修真院深圳分院第3期的學員棵癣,一枚正直純潔善良的前端程序員,今天給大家分享一下夺衍,修真院官網(wǎng)前端工程師...
    大大頭大閱讀 7,598評論 1 72
  • Ajax和XMLHttpRequest 我們通常將Ajax等同于XMLHttpRequest狈谊,但細究起來它們兩個是...
    changxiaonan閱讀 2,229評論 0 2
  • 你不來河劝,我走了 對不起,我累了矛紫,我不想再等了赎瞎; 你來了,我走了 對不起颊咬,我累了务甥,我終于等不起了; 我不等了喳篇,沒有結(jié)...
    奈若何曦閱讀 336評論 2 0