使用sessionStorage实现返回上一页直接到离开时的位置

本文介绍了一种利用sessionStorage在浏览器中记录页面滚动位置的方法。当用户在不同页面间切换时,通过保存和恢复滚动位置,使得用户返回时可以直接看到上次浏览的内容位置,提升了用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用sessionStorage实现,在返回到之前浏览的页面时,直接将页面展示到用户刚刚浏览的位置,而不是重新刷新页面到了页面顶部。

代码:

//page01.html
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
		// 页面加载时, 从sessionStorage中拿出之前保存的距离顶部的距离,并定位到位置
		window.onload = function() {  
			var _offset = sessionStorage.getItem("toTop");  
			$(document).scrollTop(_offset);
		};
		// 在跳转至其他页面时,保存该页面距离顶部距离到sessionStorage
		$(".btn").click(function() {
			if($(document).scrollTop() != 0) {
				sessionStorage.setItem("toTop", $(window).scrollTop());
			}
		});
</script>
<body>
	<p>这是一行的信息</p>
	<p>这是一行的信息</p>
	...
	<p>这是一行的信息</p>
	<p>这是一行的信息</p>

	<a href="page02.html" class="btn">跳转页面</a>
</body>
//page02.html
<body>
	<h1>这是页面2</h1>
	<a href="index.html">回到页面1</a>
</body>

代码解释:
用户点击”跳转页面按钮“,拿到滚动位置,存入sessionStorage中。
在页面onload时,拿到存在sessionStorage中的滚动位置数据,滚动到相应的位置。

其他:

具体的sessionStorage和localStorage的解释和使用方法

### 浏览器返回一页并传递参数的方法 通过 `window.history` 对象可以管理用户的浏览历史记录。当希望在页面之间导航携带额外的数据,通常有几种方式可以在不刷新整个页面的情况下实现这一点。 #### 使用 URL 查询字符串 一种简单的方式是在跳转到新页面之前修改当前URL以包含查询参数。这样即使用户点击了浏览器的回退按钮回到前一页面,也可以从地址栏读取这些参数: ```javascript // 设置新的状态,并更新url带参 const newState = { data: 'someData' }; history.pushState(newState, '', '?data=someData'); // 当用户按下了后退键或调用了 history.back() window.onpopstate = function(event) { console.log('location: ' + document.location); console.log('history.state: ', event.state); // 获取 state 数据 }; ``` 这种方式利用了 HTML5 的 History API 中的 `pushState()` 方法[^1]。此方法不会触发页面重新加载而是改变浏览器地址栏显示的内容,并允许设置自定义的状态对象,在后续处理中可以通过监听 `popstate` 事件获取该状态信息。 #### 利用 sessionStorage 或 localStorage 存储临数据 另一种方案是借助 Web Storage 接口保存一些轻量级的信息。对于仅需短期存在的数据来说,sessionStorage 是理想的选择;而对于更持久化的存储需求,则可以选择 localStorage: ```javascript // 在离开页面前进存入 session storage sessionStorage.setItem('key', JSON.stringify({ message: "Hello from previous page!" })); // 返回之后取出数据 if (sessionStorage.getItem('key')) { const storedData = JSON.parse(sessionStorage.getItem('key')); alert(storedData.message); } ``` 这种方法的好处在于它不受限于特定的历史条目,只要在同一会话期间都可以访问所储存的数据。不过需要注意的是,如果关闭窗口后再打开新标签页的话,那么之前的 sessionStorage 将不再可用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值