国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

《前端實戰總結》如何在不刷新頁面的情況下改變URL

開發 前端
由于公司最近有個需求是想讓我們的get請求的參數都直接顯示在瀏覽器url上,這樣我們就可以直接通過復制url來顯示對應的界面數據了。

[[434828]]

由于公司最近有個需求是想讓我們的get請求的參數都直接顯示在瀏覽器url上,這樣我們就可以直接通過復制url來顯示對應的界面數據了。

背景介紹

由于我們常用的http請求一般是基于XHR對象的實現或者fetch實現,這種請求操作并不會觸發瀏覽器url的變化,這樣雖然也能正常請求數據并渲染到頁面,但是如果用戶在當前頁面操作了某個get請求并得到了某條數據,想通過鏈接將當前看到的界面分享給其他人時,那么此時瀏覽器url并不會變化,通過鏈接只能訪問到初始化的數據界面,此時并不能達到理想的效果。如下圖所示:

(單純使用ajax或者fetch實現get請求時)

當我們在該頁面將列表切換到第二頁時,瀏覽器url并沒有變化,所以將鏈接復制給其他人打開并不會將列表結果切換到第二頁,而是重新初始化。

實現過程

通過以上的背景和問題,我們可以想想可以怎么實現呢?我的第一個反應就是使用location API來實現,我們可以使用location.search來讀寫瀏覽器query參數:

  1. location.search = '?page=2'

這段代碼雖然可以改變瀏覽器url,如下圖所示:

但會出現一個性能問題,就是當我們執行了以上代碼后,整個瀏覽器都會刷新,導致我們不想刷新的部分也刷新了,那我們有辦法可以讓它局部刷新嗎?答案是必須有。

這里就要引出我們本文的重點:history API。

history API

Window.history是一個只讀屬性,用來獲取History 對象的引用,History 對象提供了操作瀏覽器會話歷史(瀏覽器地址欄中訪問的頁面,以及當前頁面中通過框架加載的頁面)的接口。HTML5引入了 history.pushState() 和 history.replaceState() 方法,它們分別可以添加和修改歷史記錄條目。

使用 history.pushState() 可以改變referrer,它在用戶發送 XMLHttpRequest 請求時在HTTP頭部使用,改變state后創建的 XMLHttpRequest 對象的referrer都會被改變。因為referrer是標識創建 XMLHttpRequest 對象時 this 所代表的window對象中document的URL。

那么我們就可以使用pushState來實現我們的更新瀏覽器url功能了。

pushState() 方法

pushState() 需要三個參數: 一個狀態對象, 一個標題 (目前已忽略), 和 (可選的) 一個URL:

  • 狀態對象 — 狀態對象state是一個JavaScript對象,通過pushState () 創建新的歷史記錄條目。無論什么時候用戶導航到新的狀態,popstate事件就會被觸發,且該事件的state屬性包含該歷史記錄條目狀態對象的副
  • 標題 — Firefox 目前忽略這個參數,但未來可能會用到。在此處傳一個空字符串應該可以安全的防范未來這個方法的更改。或者,你可以為跳轉的state傳遞一個短標
  • URL — 該參數定義了新的歷史URL記錄。注意,調用 pushState() 后瀏覽器并不會立即加載這個URL,但可能會在稍后某些情況下加載這個URL,比如在用戶重新打開瀏覽器時。新URL不必須為絕對路徑。如果新URL是相對路徑,那么它將被作為相對于當前URL處理。新URL必須與當前URL同源,否則 pushState() 會拋出一個異常。該參數是可選的,缺省為當前UR

實現

  1. /** 
  2.  * 設置瀏覽器url 
  3.  *  params:queryObj(參數對象) 
  4. */ 
  5. function setBrowserUrl(queryObj){ 
  6.     // stringify是queryString的一個api,具體可以查看node官網,也可以自己實現 
  7.     var url = `${location.pathname}?${stringify(queryObj)}` 
  8.     history.pushState({url: url}, '', url) 

這樣我們就可以在請求的同時,調用setBrowserUrl方法來改變瀏覽器url了。接下來我們就可以監聽瀏覽器url的變化,如果瀏覽器url有需要的請求參數,那么我們就根據請求參數來請求數據,沒有就初始化頁面,這樣當我們查看某條記錄或者某個小秘密時,想把該數據保存下來并分享給被人,是不是就可以實現了呢?

總結

基于H5 history可以實現很多優雅使用的工具,比如路由,緩存控件等等。

本文轉載自微信公眾號「趣談前端」

 

責任編輯:姜華 來源: 趣談前端
相關推薦

2025-10-09 11:00:00

前端代碼JavaScript

2025-06-12 09:42:08

2023-08-10 10:58:24

2024-11-26 11:59:06

2019-09-03 09:55:48

DevOps云計算安全

2018-06-27 23:10:12

數據中心IT管理運維

2024-11-29 09:41:17

2022-08-24 15:08:19

模型數據技術

2019-07-26 11:51:20

云計算IT系統

2019-12-19 16:10:36

前端開發刷新頁面自動刷新

2023-03-02 08:19:43

不加鎖程序實時性

2020-06-08 09:18:59

JavaScript開發技術

2016-12-28 19:16:55

大數據數據庫技術

2016-12-30 14:01:44

數據庫投入

2025-06-10 04:18:00

AI代理智能體

2018-12-07 11:15:20

設置Windows 10命令

2018-07-31 16:20:12

Windows 10Windows密碼

2017-07-05 18:25:00

2025-10-11 04:11:00

2022-11-15 11:02:21

點贊
收藏

51CTO技術棧公眾號

日韩一区欧美一区| 亚洲人成网站在线| 欧美激情xxxx| 国内福利写真片视频在线 | 永久av在线| 成人午夜大片| av影院午夜一区| 风间由美久久久| 亚洲校园欧美国产另类| 国产成人av网站| 国产精品xxx在线观看www| 日本在线成人| 精品国产三级电影在线观看| jizzjizzji欧美| 国产激情视频一区二区三区欧美| 国产欧美日韩丝袜精品一区| 男人天堂久久| 亚洲国产精品va在线| 日韩电影网址| 国产精品久久久久9999吃药| 欧美日韩一级在线| 99国产精品私拍| 国产精品尤物福利片在线观看| 91精品视频一区二区| 精品国产一区二区精华| 精品影院一区| 婷婷成人激情在线网| jizzjizzjizz亚洲| 高清国产一区二区| 精品一区二区成人免费视频| 麻豆亚洲精品| 99久久99| 亚洲欧美文学| 亚洲va男人天堂| 久久国产亚洲精品| 国产精品香蕉av| 国产一区二区精品久| 97激碰免费视频| 亚洲视频精选| 欧美激情影音先锋| 日本亚洲视频| 欧美激情精品久久久久久| 国产精品原创视频| 精品国产一区二区三区四区在线观看| 成人av免费电影网站| 亚洲男人天堂2023| 国产精品vvv| 亚洲美女黄色片| 波多野结衣亚洲一二三| 亚洲美女福利视频网站| 久九九久频精品短视频| 亚洲免费av电影| 亚洲插插视频| 亚洲无线码在线一区观看| 中文在线а√天堂| 亚洲成人av在线播放| 金瓶狂野欧美性猛交xxxx| 日韩电影中文字幕在线观看| 人在线成免费视频| 在线观看精品国产视频| 电影中文字幕一区二区| 欧美伦理91i| 国产成人手机高清在线观看网站| 国产精品亚洲视频在线观看| 婷婷综合社区| 国产主播一区二区三区四区| 国产日韩欧美三级| 最新av在线免费观看| av毛片久久久久**hd| 亚洲综合色在线观看| 亚洲欧美另类图片小说| 欧美日韩伦理片| 欧美mv日韩mv| 国产一区高清| 国产成+人+综合+亚洲欧美丁香花| 国产精品久久久乱弄| 日韩亚洲一区在线播放| 国产日韩精品一区二区三区| 欧美18一12sex性处hd| 日韩av在线免费看| 精品资源在线| 乱一区二区三区在线播放| 国产成人午夜视频| 97秋霞电影网| 欧美一区二区三区婷婷月色| 人人玩人人添人人澡欧美| 国产精品久久精品| 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产性猛交xxxx免费看久久| 五月亚洲婷婷| 99re国产在线播放| 高清不卡在线观看av| 97国产视频| 精品久久久久久无| 日本中文字幕在线一区| 久久久久久久久久码影片| 久久亚洲精精品中文字幕早川悠里 | 国产精品福利在线观看| 日韩在线观看一区二区| wwwav91com| 亚洲精品一区二区三区在线观看| 欧美日韩xxxx| av免费观看大全| 亚洲天堂成人在线| 不卡视频在线| 高清av免费看| 在线免费av一区| 亚洲精华一区二区三区| 黄色精品在线观看| 少妇**av毛片在线看| 欧美一级bbbbb性bbbb喷潮片| 国产精品九色蝌蚪自拍| 99久久九九| 国产美女特级嫩嫩嫩bbb片| 国产成人免费av在线| 老汉色老汉首页av亚洲| 濑亚美莉vs黑人在线观看| 蜜臀av.com| 国产精品久久久久9999| 亚洲va欧美va国产va天堂影院| 久久久久久爱| 伊人资源视频在线| 国产美女网站在线观看| 最近2019年好看中文字幕视频| 久久尤物视频| 视频二区欧美| 久久国产精品网| 欧美性感美女h网站在线观看免费| 中文字幕在线三区| 色悠悠久久88| 亚洲欧美视频在线| 欧美久久久久久久久久| 国产精品第四页| 欧美国产精品劲爆| 影音国产精品| 日韩有码电影| 9191国产视频| 国产精品av一区| 国产精品一区二区性色av| 色综合久久88| 日韩小视频在线| 51精品视频一区二区三区| 日本一区二区三区四区| blacked蜜桃精品一区| www.亚洲免费| 正在播放一区| 91精品免费久久久久久久久| 国产精品美日韩| 国精产品一区一区三区mba桃花 | 亚洲激情图片小说视频| 捆绑调教一区二区三区| 日韩有码一区二区三区| 日日摸夜夜添夜夜添精品视频 | 成人动漫视频在线观看| 国产网站在线| 在线免费中文字幕| 麻豆av一区| 日韩av第一页| 亚洲国语精品自产拍在线观看| 中文av一区二区| 91免费观看视频在线| 精品一区二区三区免费视频| 久久亚洲一区| 白白色 亚洲乱淫| 成人国产精品免费网站| 9色porny自拍视频一区二区| 老司机一区二区三区| 国产精品自在在线| 网友自拍亚洲| 亚洲自拍另类欧美丝袜| 欧美精品三级日韩久久| 国产精品社区| 日本欧美电影在线观看| 免费亚洲精品视频| 欧美丰满嫩嫩电影| 老鸭窝91久久精品色噜噜导演| 成人在线观看免费网站| 亚洲日本无吗高清不卡| 亚洲欧美日韩成人| 国产亚洲精久久久久久| 美女视频亚洲色图| 水莓100国产免费av在线播放| 久久99精品国产一区二区三区| 欧美tk丨vk视频| 成人免费视频播放| 欧美经典影片视频网站| 成人免费网址在线| 国产精品27p| 欧美日韩中字一区| 久99久精品视频免费观看| 日本国产亚洲| 日本视频在线免费观看| 欧美性做爰毛片| 色先锋资源久久综合| 狠狠色丁香婷综合久久| 九一成人免费视频| 免费在线看污片| 在线视频国产福利| 久久www视频| 91嫩草视频在线观看|