我可以使用javascript更改地址栏中的URL字符串吗
我的网页上有一个链接,说“关于”。单击它加载一个特定的div,而不使用jquery我可以使用javascript更改地址栏中的URL字符串吗,javascript,jquery,Javascript,Jquery,我的网页上有一个链接,说“关于”。单击它加载一个特定的div,而不使用jquery.load()刷新整个页面。这不会更改浏览器地址栏中的URL字符串 通过转到www.mydomain.com/?page=about可以访问同一页面 因此,我想做的是,当用户单击“关于”链接时,页面将按原样加载(使用jquery),但我还想更改浏览器地址栏中的URL字符串,以便有人可以实际复制或为确切的页面添加书签 有可能这样做吗?是的,我是这样做的 location.hash = 'foo'; 您还可以更改位置
.load()
刷新整个页面。这不会更改浏览器地址栏中的URL字符串
通过转到www.mydomain.com/?page=about
可以访问同一页面
因此,我想做的是,当用户单击“关于”链接时,页面将按原样加载(使用jquery),但我还想更改浏览器地址栏中的URL字符串,以便有人可以实际复制或为确切的页面添加书签
有可能这样做吗?是的,我是这样做的
location.hash = 'foo';
您还可以更改位置的其他属性,不确定它的名称为“?”,可能是查询字符串、get或类似的内容。您有两种可能解决此问题:
- 在较新的浏览器中,您可以使用,它允许更改URL的一部分,还可以更改查询字符串(和路径afaik)
- 在不支持此功能的浏览器中,您只能更改片段标识符
,而无需(通过对象)重新加载页面。这意味着您必须将URL更改为例如
。由于片段标识符没有发送到服务器,因此必须使用JavaScript检测它并从服务器加载相应的数据。www.mydomain.com/#!page=about
有一些方法可以帮助您处理此问题
如我在评论中所述,您还可以在此处找到更多信息:
位置对象更改查询字符串将重新加载页面。这将更改哈希符号后出现的任何内容,例如,你可以将mydomain.com/page#foo更改为mydomain.com/page#bar,但这不是问题所在。请看Felix的回答: