通过sessionStorage会话存储实现页面跳转之后返回到当前位置 (刷新跳回顶部)【2】

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>点击跳转返回当前点击的位置</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        #app{
            width: 100%;
            height: 100%;
            background: pink;
            overflow: hidden;
        }
        a{
            display: block;
            width: 90%;
            height: 60px;
            line-height: 60px;
            text-align: center;
            margin: 30px auto;
            border: 2px dashed red;
            background: skyblue;
        }
    </style>
</head>
<body>
    <div id="app" @click="allSee">
        <a :href="href" v-for="item in list"> {{ item.title }} </a>
    </div>
     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     <script src="https://cdn.bootcss.com/axios/0.19.0-beta.1/axios.min.js"></script>
     <script>
        var vm = new Vue({
            el:"#app",
            data:{
                list:[],
                href:'https://www.baidu.com'
            },
            methods:{
                allSee(){
                    //点击获取高度
                    var scroll = document.documentElement.scrollTop || document.body.scrollTop;
                    sessionStorage.setItem('scroll',scroll)
                },
                //请求数据
                async getData(){
                    const {data} = await axios.post('https://bj.qhtest.site/byzz/v1.game_live/eventDetails',{mid:118303,type:'all',thirty:1,page:1})
                    if(data.Code == 200){
                        this.list = data.Data.list
                        this.getSession() //在数据请求成功之后获取session
                    }
                },
                //获取session
                getSession(){
                    // this.$nextTick() 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。
                    this.$nextTick(()=>{//这个需要延迟加载否则为0
                        var scrolltop = Number(sessionStorage.getItem('scroll'))
                        document.documentElement.scrollTop = document.body.scrollTop = scrolltop
                        //赋值成功之后要清除 否则 再次刷新无法回到顶部
                        sessionStorage.removeItem('scroll')
                    })
                }
            },
            created(){
                this.getData()
            },
//          mounted(){
//              this.getData()
//          },
        })
     </script>
</body>
</html>

原文地址:https://www.cnblogs.com/a-pupil/p/10819157.html

时间: 2024-10-22 22:40:51

通过sessionStorage会话存储实现页面跳转之后返回到当前位置 (刷新跳回顶部)【2】的相关文章

HTML5 sessionStorage会话存储

sessionStorage 是HTML5新增的一个会话存储对象,用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据.本篇主要介绍 sessionStorage(会话存储)的使用方式.包括添加.修改.删除等操作. 目录 1. 介绍 1.1 说明 1.2 特点 1.3 浏览器最小版本支持 1.4 适合场景 2. 成员 2.1 属性 2.2 方法 3. 示例 3.1 存储数据 3.2 读取数据 3.3 存储Json对象 1. 介绍 1.1 说明 sessionStorag

Cookies,localStorage,sessionStorage,Web SQL Database(客户端)会话存储学习

客户端(浏览器端)存储数据有诸多益处,最主要的一点是能快速访问(网页)数据.目前常见的浏览器端数据存储方法有:Cookies,Local Storage,Session Storage,IndexedDB 取值,存值,删除(用于浏览器存储客户端的访问数据) 1.Cookies Cookies 是一种在文档内存储字符串数据最典型的方式.一般而言,cookies 会由服务端发送给客户端,客户端存储下来,然后在随后让请求中再发回给服务端.这可以用于诸如管理用户会话,追踪用户信息等事情. Cookies

Magento2使用Redis进行页面缓存或会话存储。

1.Redis是一个可选的后端缓存解决方案,不过magento2默认使用的是Zend_Cache_Backend_File 2.Zend_Cache_Backend_File的问题 core_cache_tag表不断增长. 如果Magento实例具有多个网站和具有大型目录的网络商店,则该表可在不到一天内增长到1500万条记录. 插入到core_cache_tag会导致MySQL服务器的问题,包括性能降低. 3.为什么使用Redis Redis也可以用于PHP会话存储,使得可以使用Redis完全替

会话存储sessionStorage

会话存储的工作方式和本地存储的工作方式很接近,不同之处在于数据是各个浏览器上下文私有的,会在文档被关闭时移除(注意是被关闭时才移除,刷新是不会移除的).我们通过全局sessionStorage访问会话存储,它返回一个Storage对象,该对象与本地存储里的是一样的. sessionStorage案例1: 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <t

Vue -- element-ui el-table 点击tr项页面跳转,返回后缓存回显点击项

页面跳转反显 点击table tr项后,页面跳转到下级页面,返回回显搜索条件.当前页码.并将点击项select选中.滚动条也被记录回显跳转时滚动的位置 思路: 页面临时缓存我选择使用sessionStorage,点击tr行将搜索条件和页码,点击行的id进行存储 data(){ return { } } setSessionStore (name, content) { if (!name) return if (typeof content !== 'string') { content = J

express中的会话存储方式

会话存储需要用的express-session包 app.use(require('express-sessiion')()) express-session接收带有如下选项的配置对象: key;存放唯一会话标识的cookie名称,默认为connect.sid, store 会话存储的实例,默认为一个MemoryStore的实例 cookie 会话cookie的cookie设置(path,domain,secure等) 会话设置之后使用起来非常简单,就是使用req请求对象的session属性,注

JSP中如何利用JS实现登录页面的跳转(JSP中如何利用JS实现跳转页面)

JSP中如何利用JS实现登录页面的跳转(JSP中如何利用JS实现跳转页面) 注:只是用到js中的setTimeout();具体使用方法:  setTimeout(函数名, 时间(毫秒)); setTimeout( ) 是属于 window 的 method, 但我们都是略去 window 这顶层物件名称, 这是用来设定一个时间, 时间到了, 就会执行一个指定的 method.setTimeout( ) 通常是与 function一起用. 样例: 1 <%@ page language="j

HTML5本地存储实例页面

HTML代码: <ul id="edit" contenteditable="true"> <li>修改我吧,然后刷新页面看看,^_^</li> </ul> JS代码: var edit = document.getElementById("edit"); edit.onblur = function(){ localStorage.setItem("tododata", thi

.NET 页面跳转、返回与刷新

页面刷新 window.location.reload(); 跳转指定页面  Response.Redirect(Url); 返回上一页 window.history.back(); 返回下一页 window.history.forward(); 返回到指定页面 window.history.go(index);  //index代表返回的页面序号,-1为上一页 返回页面时刷新 由于缓存的问题,直接使用js代码返回页面会加载过期的页面内容,这是需要关闭页面缓存,这样返回时就会重新加载新的页面内容