在没有回发的情况下向URL添加/删除参数(查询字符串的功能)

时间:2017-04-30 06:15:10

标签: javascript jquery asp.net url query-string

google如何在Gmail中添加和删除网址中的参数而不进行回发。 我在这里指的是他们保存你的草稿的方式,一旦你点击撰写,你可以看到添加“?compose = new”参数,一旦你开始编写,他们会给它一个ID。

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

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

Thanks`

1 个答案:

答案 0 :(得分:1)

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

https://mail.google.com/mail/u/0/#inbox
https://mail.google.com/mail/u/0/#imp

请注意,inboximp后跟哈希。 URL中哈希的含义是它链接到页面的一部分。因此,每次#更改后的网址部分,浏览器都会识别该网址只是指向同一网页中的元素 - 不是指向其他网页。因此,不会发出服务器请求。

您可以查看这些答案,以了解有关如何使用javascript在页面中导航的更多信息:

https://stackoverflow.com/a/2835151/5894241

https://stackoverflow.com/a/3163635/5894241

借助Angular等现代javascript框架,网站通常会利用此功能制作单页应用程序(SPA)。这些框架将使用哈希值识别要加载的页面,然后使用AJAX在幕后加载该页面的内容,并在没有回发的情况下显示它。

你可以在这里看到Angular如何做到这一点:https://www.w3schools.com/angular/angular_routing.asp