可以使用javascript重写URL客户端而无需重新加载页面

ric*_*gen 14 javascript

是否可以在客户端浏览器的URL字段中重写URL?

因此,当一个人点击我页面上的链接时会发生ajax(例如显示一个标签)我想让网址显示动作而不刷新页面.

这可能吗?

Tom*_*ley 25

当其他人回答这个问题时,他们是对的,无法在javascript中更改网址.使用HTML5和现代浏览器,它现在正在使用HTML5 History API

关于它的diveintohtml5.info文章.是另一个很好的博客文章解释这个功能.

检查caniuse.com的浏览器兼容性.

有一些库,例如History.js,它们包含API,并使用hashbangs为旧浏览器进行pollyfill.


Emi*_*röm 14

您可以更改URL的哈希/锚点部分(在#之后).URL的其余部分是只读的.

location.hash = "#value";
Run Code Online (Sandbox Code Playgroud)


Rex*_*x M 9

URL 重写是不可能的,但是使用散列附加动作数据是很常见的.例如,Facebook广泛使用它:

http://www.facebook.com/#!/username
                        ^
Run Code Online (Sandbox Code Playgroud)

哈希之后的所有内容都只是同一页面中的锚点数据,您可以整天通过脚本进行修改.

较新的浏览器还提供onhashchanged事件,因此您可以对"URL"进行更改而不是不断轮询它.