頁面返回上一頁瀏覽位置


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]);
  }
  }
  }

})



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM