我如何让一个JavaScript动作对当前页面有一些影响,但也会改变浏览器中的URL,这样当用户点击重新加载或书签时,就会使用新的URL ?

如果后退按钮可以重新加载原始URL,那就太好了。

我试图在URL中记录JavaScript状态。

我有URL: http://example.com#something,我如何删除#一些,而不导致页面刷新?

我尝试了以下解决方案:

window.location.hash = '';

但是,这不会从URL中删除散列符号#。

我使用Ajax和哈希导航。

有没有办法检查window。location。hash是否像这样改变了?

http://example.com/blah#123至http://example.com/blah#456

如果我在文件加载时检查它,它就会工作。

但如果我有#哈希导航,它不工作时,我按浏览器上的后退按钮(所以我从blah#456跳转到blah#123)。

它显示在地址框内,但我无法用JavaScript捕获它。

我刚刚注意到,我们习惯使用的冗长、复杂的Facebook url现在是这样的:

http://www.facebook.com/example.profile !/页面/另一个页面/ 123456789012345

据我所知,今年早些时候,它只是一个普通的类似url片段的字符串(以#开头),没有感叹号。但是现在它是shebang或hashbang(#!),以前我只在shell脚本和Perl脚本中见过。

新的Twitter url现在也有#!符号。例如,一个Twitter配置文件的URL现在看起来是这样的:

http://twitter.com/ !/ BoltClock

是# !现在在url中扮演一些特殊的角色,比如某个Ajax框架或其他什么,因为新的Facebook和Twitter界面现在主要是Ajax化的? 在我的url中使用这个会对我的Web应用程序有任何好处吗?

当人们想用“http://example.com/#foo“方法,应该使用

<h1><a name="foo"/>Foo Title</h1>

or

<h1 id="foo">Foo Title</h1>

它们都有效,但它们是相等的,还是有语义差异?

我有一些jQuery/JavaScript代码,我想只在URL中有一个散列(#)锚链接时运行。如何使用JavaScript检查这个字符?我需要一个简单的全方位测试,可以检测到如下url:

example.com/page.html #锚 example.com/page.html # anotheranchor

基本上是这样的:

if (thereIsAHashInTheUrl) {
    do this;
} else {
    do this;
}