精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

javascript實(shí)現(xiàn)不重載頁(yè)面前提下創(chuàng)建一條歷史紀(jì)錄的方法是什么

這篇文章主要介紹javascript實(shí)現(xiàn)不重載頁(yè)面前提下創(chuàng)建一條歷史紀(jì)錄的方法是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

東洲ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:13518219792(備注:SSL證書(shū)合作)期待與您的合作!

背景

最近在上班過(guò)程中,遇到了這么一個(gè)需求,在多頁(yè)面應(yīng)用中,需要在幾個(gè)頁(yè)面上共用同一個(gè)數(shù)據(jù)來(lái)源,且切換頁(yè)面不刷新頁(yè)面數(shù)據(jù),并能實(shí)現(xiàn)歷史記錄的后退功能;因前期只考慮在一個(gè)頁(yè)面內(nèi)實(shí)現(xiàn)多個(gè)頁(yè)面的效果,并未考慮到歷史記錄堆棧中的處理,導(dǎo)致頁(yè)面會(huì)一次性推出入口,以下為總結(jié)的幾種解決方法。

hash

在URL中,#我們稱(chēng)為位置標(biāo)識(shí)符,代表網(wǎng)頁(yè)的一個(gè)位置,在我們剛開(kāi)始接觸到a標(biāo)簽的時(shí)候,我們很多人都有操作過(guò)錨點(diǎn)跳轉(zhuǎn),主要就是通過(guò)在 href 中設(shè)置想要跳到的位置的id值,在這個(gè)過(guò)程中,頁(yè)面是沒(méi)有刷新的,但歷史記錄卻新增了一條;我們利用window.location.hash可以取得當(dāng)前頁(yè)面的hash值,同時(shí)也可以也可以通過(guò)其寫(xiě)入新的hash值,并通過(guò)監(jiān)聽(tīng)hashchange事件,來(lái)檢測(cè)hash值是否發(fā)生了改變。當(dāng)我們?cè)冱c(diǎn)開(kāi)彈框式的遮罩頁(yè)面的時(shí)候,可以手動(dòng)的去修改location.hash的值,這樣點(diǎn)擊window.history.back(),就可以實(shí)現(xiàn)歷史記錄回退;

例子

代碼如下:




    
    Title
    


加載中....

在瀏覽器中打開(kāi)該頁(yè)面,并在路由上加上#blue,如下:

javascript實(shí)現(xiàn)不重載頁(yè)面前提下創(chuàng)建一條歷史紀(jì)錄的方法是什么

可看到如下頁(yè)面,初始條件下,頁(yè)面的顯示加載中...,而后定時(shí)器觸發(fā)更新,顯示遞增的數(shù)字,此時(shí)我們可以在控制臺(tái)中打印出對(duì)應(yīng)的history.length,其值為2:

javascript實(shí)現(xiàn)不重載頁(yè)面前提下創(chuàng)建一條歷史紀(jì)錄的方法是什么

javascript實(shí)現(xiàn)不重載頁(yè)面前提下創(chuàng)建一條歷史紀(jì)錄的方法是什么

接下來(lái),我們通過(guò)點(diǎn)擊change-url 按鈕,去實(shí)現(xiàn)修改hash值,我們可以看到,對(duì)應(yīng)的路徑發(fā)生了改變,#blue變?yōu)?g'ra,背景顏色也對(duì)應(yīng)的更改,但此時(shí)遞增的數(shù)字沒(méi)有被刷新,說(shuō)明我們的頁(yè)面并沒(méi)有經(jīng)過(guò)刷新重載的過(guò)程。

javascript實(shí)現(xiàn)不重載頁(yè)面前提下創(chuàng)建一條歷史紀(jì)錄的方法是什么

javascript實(shí)現(xiàn)不重載頁(yè)面前提下創(chuàng)建一條歷史紀(jì)錄的方法是什么

重新在控制臺(tái)輸入window.history.length可以看到,其值已經(jīng)變?yōu)?,點(diǎn)擊瀏覽器后退箭頭,頁(yè)面背景改為之前的藍(lán)色背景,到這里,我們就實(shí)現(xiàn)我們想要的功能;

javascript實(shí)現(xiàn)不重載頁(yè)面前提下創(chuàng)建一條歷史紀(jì)錄的方法是什么

history.pushState

除了上面講到的方法外,通過(guò)html5新增的history.pushState也可以實(shí)現(xiàn)同樣的效果;
history.pushState和history.replaceState同是html5新增的api,都可以實(shí)現(xiàn)改變狀態(tài)欄的url而不刷新頁(yè)面,但兩者的區(qū)別是,replaceState是替換當(dāng)前地址為指定的url,而pushState則是創(chuàng)建一條新的歷史紀(jì)錄。執(zhí)行history.back()和history.forward()后會(huì)觸發(fā)window.onpopstate事件。

API

history.pushState(state,title,url)
state:對(duì)象,可以存放一些數(shù)據(jù)表示當(dāng)前的狀態(tài)。當(dāng)瀏覽器執(zhí)行前進(jìn)或在后退的時(shí)候,會(huì)觸發(fā)onpopState事件,state將會(huì)是event對(duì)象的屬性對(duì)象,可以通過(guò)event.state訪問(wèn);需要注意的是,statez中的屬性值不能為對(duì)象。url為將要替換的地址;如果是puhState則會(huì)添加一條歷史記錄;

例子

我們同樣可以用上面的例子來(lái)測(cè)試,只不過(guò),我們需要監(jiān)聽(tīng)的是popstate事件,新建歷史記錄,將當(dāng)前信息保存到history.state中,

history.pushState && window.addEventListener("popstate",function(e){})
history.pushState && history.pushState(state,title,url)

以上是javascript實(shí)現(xiàn)不重載頁(yè)面前提下創(chuàng)建一條歷史紀(jì)錄的方法是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)站名稱(chēng):javascript實(shí)現(xiàn)不重載頁(yè)面前提下創(chuàng)建一條歷史紀(jì)錄的方法是什么
分享路徑:http://m.jcarcd.cn/article/igdhid.html
主站蜘蛛池模板: 午夜福利在 | 日韩在线欧美精品 | 国产传媒片免费观看 | 欧美另类日本 | 国产女网红亚洲精品 | 国产乱子伦露脸在线 | 91视频网站免费 | 99热国产 | 国产淫脚在线观看 | 国产欧美另 | 国产普通话对白 | 国产日本欧美精品 | 国产资源一区 | 国内精品一区 | 成人午夜视频网站 | 国产理论片高清 | 精品9999| 中文字幕亚洲无线码 | 国产精品系列专区 | 国内精品自线在拍 | 国产妇女视频免费 | 成人午夜亚洲精品无 | 成人国内精品久 | 中文字幕丰满伦孑 | 成人亚洲综合 | 日韩成人影片 | 频道国产在线资源 | 精品国产男人的 | 国产视频短 | 精品国产呦系 | 日韩综合第一页 | 国产免费日本高清 | 尤物国产视频 | 91精品区 | 国产v亚洲v天| 欧美日韩亚洲一区 | 国产不卡三区 | 日韩熟女激情中 | 日本高清另| 国产高清乱伦自拍 | 国产综合之 |