Javascript 在不回发的情况下向URL添加/删除参数(查询字符串的函数)

Javascript 在不回发的情况下向URL添加/删除参数(查询字符串的函数),javascript,jquery,asp.net,url,query-string,Javascript,Jquery,Asp.net,Url,Query String,谷歌在他们的Gmail中如何在不回发的情况下从URL中添加和删除参数。 我在这里指的是他们保存草稿的方式,一旦你点击compose,你就会看到?compose=新参数被添加,一旦你开始撰写,他们就会给它一个ID 我如何在没有回发的情况下操作URL?我正在考虑使用'history.pushState{},document.title,?querystring=1 但我很想知道是否有更好的方式与移动浏览器兼容 谢谢`Gmail在URL中使用散列来表示不同的文件夹。举个例子,我打开收件箱或重要文件夹时

谷歌在他们的Gmail中如何在不回发的情况下从URL中添加和删除参数。 我在这里指的是他们保存草稿的方式,一旦你点击compose,你就会看到?compose=新参数被添加,一旦你开始撰写,他们就会给它一个ID

我如何在没有回发的情况下操作URL?我正在考虑使用'history.pushState{},document.title,?querystring=1

但我很想知道是否有更好的方式与移动浏览器兼容


谢谢`

Gmail在URL中使用散列来表示不同的文件夹。举个例子,我打开收件箱或重要文件夹时的URL如下:

https://mail.google.com/mail/u/0/#inbox
https://mail.google.com/mail/u/0/#imp
请注意,inbox和imp后面跟着一个散列。URL中哈希的含义是它链接到页面的一部分。所以,每次更改URL后,浏览器都会识别出URL只是指向同一页面中的一个元素,而不是指向不同的页面。因此,不会发出服务器请求

您可以查看这些答案,以进一步了解如何使用javascript在页面中使用哈希进行导航:

对于Angular等现代javascript框架,网站通常利用此功能来创建单页应用程序。这些框架将使用散列值识别要加载的页面,然后使用AJAX在后台加载该页面的内容,并在不回发的情况下显示该页面


您可以在这里看到这一点:

谢谢您的解释,但是如何添加查询字符串并在不回发的情况下删除它呢?其实很简单。您需要将查询字符串放在URL中的哈希之后。例如,对于gmail,撰写电子邮件的查询字符串如下所示:https://mail.google.com/mail/u/0/inbox?compose=new 你们可以自己测试——在查询字符串中添加任何内容,浏览器将不会发送回发。非常感谢