如何在浏览器地址栏中将主机名(路径前)后的哈希值放入

时间:2013-08-22 17:53:53

标签: javascript jquery html

在我的网站上,我使用ajax来获取页面的元素。当我这样做时,我只是将地址添加到地址栏中的哈希。但是这会生成看起来不那么好的链接,例如,当用户想要转到hostname.com/path时,我的javascript会在地址栏中输入如下内容:hostname.com/path#/path

最近我在我当地的社交网站上看到,可以操纵链接的路径部分。我正在谈论的网站,在第一个/之后以某种方式修改了所有内容。因此,当我输入mysocialsite.com/path时,它会删除/path部分并将其替换为#/path。我怎样才能做到这一点?就像我所知道的那样,不可能修改URL(除#部分之外),但显然我错了。

编辑:这正是我想要做的事情:

  1. 我要去somepage.com/path/to/resource。输入我的 地址栏,然后单击输入。
  2. 现在页面已加载,该页面上的javascript将链接更改为somepage.com/#path/to/resource,而不进行任何进一步的页面重新加载或任何类似的操作。

2 个答案:

答案 0 :(得分:1)

您可能正在寻找pushstate

var infoToStoreIfYouNeedThis = { foo: "bar" }; // might not need this at all
history.pushState(infoToStoreIfYouNeedThis , "Title of new page", "/#newLocation");

这会将网址更改为“domein.ext / #newLocation”而不重新加载页面。如果您转到 /#anotherLocation 然后再按浏览器,则转到/ #newLocation。 但请小心,不是IE9及更低版本,supportchart can be found here

如果您不介意重新加载(您可能会这样做):

window.location = "/#newLocation"

答案 1 :(得分:0)

当然可以。没有什么可以阻止您使用控制器来处理/,然后使用客户端代码来处理#。请注意,您无法摆脱最初的/,但您可以执行以下操作:

http://example.com/#/path/segment2/segment3