1.如果上一頁是靜態頁面,可以用 history.go(-1)方法; go() 方法可載入歷史列表中的某個具體的頁面。 該參數可以是數字,使用的是要訪問的 URL 在 History 的 URL 列表中的相對位置。(-1上一個頁面,1前進一個頁面)。或一個字元串,字元串必須是局部或完整的URL,該函 ...
1.如果上一頁是靜態頁面,可以用 history.go(-1)方法;
go() 方法可載入歷史列表中的某個具體的頁面。
該參數可以是數字,使用的是要訪問的 URL 在 History 的 URL 列表中的相對位置。(-1上一個頁面,1前進一個頁面)。或一個字元串,字元串必須是局部或完整的URL,該函數會去匹配字元串的第一個URL。
該方法返回上一頁,不刷新頁面,但是會執行js;
例子:
<a href="javascript:;" onclick="javascript:history.go(-1);">Back</a>
點擊back 頁面就會返回上一個頁面的瀏覽位置
2.我在工作中遇到的,頁面採用了vue,頁面每次載入都會去請求數據,用history.go(-1)方法返回上一頁,上一頁的頁面因為重新請求數據,頁面不會定位到上次瀏覽的位置;
解決思路:使用onbeforeunload(事件在即將離開當前頁面(刷新或關閉)時觸發)方法在頁面離開時把滾動條位置和頁面文本高度放到cookie中,當頁面刷新或重新載入時取出滾動條位置和頁面文本高度,設置到頁面。
代碼如下:
window.onbeforeunload = function () {
var scrollPos, height;
if (typeof window.pageYOffset != 'undefined') {
scrollPos = window.pageYOffset;
} else if (typeof document.compatMode != 'undefined' &&
document.compatMode != 'BackCompat') {
scrollPos = document.documentElement.scrollTop;
} else if (typeof document.body != 'undefined') {
scrollPos = document.body.scrollTop;
}
height = document.body.scrollHeight;
document.cookie = "scrollTop=" + scrollPos; //存儲滾動條位置到cookies中
document.cookie = "height=" + height; //存儲滾動條位置到cookies中
}
new Vue({
el:'#app',
updated: function () {
var height;
//獲取之前的頁面高度
if (document.cookie.match(/height=([^;]+)(;|$)/) != null) {
var arr = document.cookie.match(/height=([^;]+)(;|$)/); //cookies中不為空,則讀取頁面高度
height = parseInt(arr[1]);
}
//獲取之前的滾動條位置
if (document.body.scrollHeight == height) {
if (document.cookie.match(/scrollTop=([^;]+)(;|$)/) != null) {
var arr = document.cookie.match(/scrollTop=([^;]+)(;|$)/); //cookies中不為空,則讀取滾動條位置
document.documentElement.scrollTop = parseInt(arr[1]);
document.body.scrollTop = parseInt(arr[1]);
}
}
}
})