在创建一个活动的时候,在保存了即创建成功了之后,页面应该属于编辑的状态,不然用户手动刷新页面,页面依然处于创建状态,

qs是一个库,将地址栏参数序列化

 var url=this.$route.path
        var query=that.$router.history.current.query
        query.isEdit=true
        query=JSON.parse(JSON.stringify(query))
        var newUrl=qs.stringify(query)
        that.$message({
          message: "保存成功",
          type: "success"
        window.history.replaceState("", "", url+'?'+newUrl);

在不刷新页面的情况下修改浏览器url链接的需求,考虑到可以通过history.pushState()解决。现在将我理解的一些内容分享一下,不对的地方欢迎大家指出。

在使用方法前首先需要了解它的兼容性,history.pushState()存在一定的兼容性问题,可以通过 https://caniuse.com/#search=pushState 查看支持的浏览器版本。

history.pushState(stateObject, title, url);

history.pushState()主要是在不刷新浏览器的情况下,创建新的浏览记录并插入浏览记录队列中。

1、状态对象(stateObject)—— stateObject是一个JavaScript对象,通过pushState方法可以 将stateObject内容传递到新页面 中。

2、标题(title)—— 几乎没有浏览器支持该参数,但是传一个空字符串会比较安全。

3、地址(url)—— 新的历史记录条目的地址(可选,不指定的话则为文档当前URL)。

浏览器在调用pushState()方法后不会加载该地址;传入的URL与当前URL应该是同源的,否则,pushState()会抛出异常。

window.history.replaceState({}, '', `?query=${this.query}`)

上面代码就可以在不刷新网页的情况下,更新url链接了。

一、使用pushState()方法 可以控制浏览器自带的返回按钮

有时候我们想让用户点击浏览器返回按钮时,不返回,或执行其他操作,这时,就用到history.pushState()方法。

history.pushState(data,title,url) ,每执行一次都会增加一条历史记录

data:要设置的history.state的值,可以是任意类型的值,可根据此值进行判断执行想要的操作。

比如监听浏览器的前进后退事件:

window.addEventListener("popstate", function() {
    // 取出 设置好的 history.state 值,做判断

二、history.replaceState() 与pushState()功能类似,除了这点:

  replaceState()是用来修改当前的历史记录(history实体),而不是创建一个新的历史记录,所以,当执行完history.replaceState()后,点击返回按钮照样会返回上一个页面。  当需要更新一个state对象或者当前history实体时,可以用replaceState()来实现。

  用法:当在a页面使用replaceState()修改了历史记录后,跳转到b页面,后退到a页面时,历史记录就是修改过的。

在完成毕业设计(基于Vue的信息资讯展示与管理平台)的过程中,处理如下图所示的 点击左侧栏目列表跳转到对应文章列表 的问题时,初次点击可以跳转到对应的页面,但是当第二次点击时,虽然地址栏的参数改变了,也没有重新刷新页面中的内容。第1次,点击“潮科技”时显示的内容:第2次,点击“奇趣事”时显示的内容:造成上述情况的原因:vue项目中路由跳转默认采用hash的方式,而hash的变化不会导致浏览器发送请... 代码开发的过程中分为生产环境和开发环境,生产环境是部署上线后的环境,而开发环境就是代码开发阶段所使用的环境,很多服务都是本地的; 代码打包之后,后端服务地址有变动,不想重新打包,能否通过修改某些文件的方式来进行修改? 解决方案: 在根目录下新建一个config.js文件,里面的信息就是生产环境的地址信息: 然后在index文件中引入该js文件 此时 ,在我们项目中的js代码中就能够直接拿到config文件内的信息了,也就是dataUrl这个对象; 紧接着,在自己封装api时,一般会判断是生产环 出现这种情况是因为依赖路由的query或params参数获取写在created生命周期里面,因为相同路由二次甚至多次加载的关系 > 没有达到监听,退出页面再进入另一个文章页面并不会运行created组件生命周期,导致文章数据还是第一次进入的数据。 vue 路由传参的使用场景一般都是应用在父路由跳转到子路由时,携带参数跳转。传参方式可划分为 params 传参和 query 传参,而 params 传参又可分为在 url 中显示参数和不显示参数两种方式,这就是vue路由传参的三种方式。而有的时候需要vue 改变路由(URL参数但是不需要刷新页面,就是文章内的方法... 由于公司最近有个需求是想让我们的get请求的参数都直接显示在浏览器url上,这样我们就可以直接通过复制url来显示对应的界面数据了。背景介绍由于我们常用的http请求一般是基于XHR对象的实现或者fetch实现,这种请求操作并不会触发浏览器url的变化,这样虽然也能正常请求数据并渲染到页面,但是如果用户在当前页面操作了某个get请求并得到了某条数据,想通过链接将当前看到的界面分享给其他人时,那么此... 在网上看了很多方法有说location.reload方法刷新的,也有说用自定义*this.reload()*的方法的,但是都不是根本解决问题,后来问了大佬,大佬说只是因为我不了解数据驱动,数据更新只需要在方法里把数据赋值之前先置空,然后在监听里面监听并重新获取数据就可以(也就是在监听里面触发条件后再调一遍方法) 当路由或者地址参数变化后需要更新数据 问题场景: 当路由或者地址参数变化后需要更新数据,通过监听的方法监听地址参数变化后重新获取数据,新的数据更新上去了,但是旧的数据也还在。