history.pushstate
今天在做一个vue的搜索功能,需要从搜索结果页面跳转到细节页面,然后点击返回还能返回到刚刚的结果页面,如果只用window.history.go(-1)当然会重新刷新搜索页面,当然是不行的。
我尝试了两种方法都是通过改变url来实现,一种是window.location.href拼接一个搜索的key值,点击搜索的同时,刷新了页面,url改变了,功能是实现了,可是bug来了。。。。,搜索页面闪烁后才进入结果页,而结合不跳转页面就不会发生闪烁的情况,所以当页面刷新时,vue实例都会被重新加载。
所以解决办法就是寻找不刷新就能改变url的方法。百度许久,终于找到history,window.history引入了两个api,pushstate和replaceState,我们可以很方便的达到改变url而不重载页面的目的。
两种api都能改变当前的url,不同的是,pushState在浏览器中创建一条新的历史记录,而replaceState仅仅替换当前地址为指定url
history.pushState && history.pushState({ title: value }, value, 'pushState.html?key='+value)
在我的需求中,我使用了replaceState
最后介绍另一种无刷新技巧,window.location.hash,url中#为网页中的一个位置,当读取此url时,页面会自动滚动到锚点处。这种方法不会向服务器发送请求,也不会重载页面。可读写。读取时,可以用来判断网页状态是否改变;写入时,则会在不重载网页的前提下,创造一条访问历史记录。
相关阅读
history.pushState是HTML5的特殊,IE8+支持意思是在不刷新浏览器的情况下给浏览器记录插入队列的意思.“插菊花“参考地址:https://d
1、简介window.history是用来保存用户在一个会话期间的网站访问记录,并提供相应的方法进行追溯。其对应的成员如下:方法:back()、for
Javascript:history.go()和history.back()的用法与区别
Javascript:history.go()和history.back()的用法与区别简单的说就是:go(-1):返回上一页,原页面表单中的内容会丢失;back():返回上一页
Html5使用history对象history.pushState()和history.r
原文:https://www.studyscript.com/Post/index/id/3018.html?page=3正文~概述浏览器窗口有一个history对象,用来保存浏览历史。如果
编者注:这个pushState()是一个HTML5的新接口,你可能在一些科技博客如36kr上看到过,ajax加载新的文章,并且改变网址却不需要刷新页面,本