2011-05-05 31 views
4

我目前正在使用面向AJAX的Web应用程序。我一直在寻找使用浏览器URL复制当前AJAX状态(或应用程序状态)的不同方法,因此刷新和后退按钮也可以工作。从Javascript中更改网址与Facebook类似

在过去的几周里,我看到了涉及使用散列(#)和不同的JS框架的不同方法。

在文档中指出,从JS更改浏览器URL是不可能的。今天,我去了Facebook并打开了一张图片,并更改了网址(图片在Lightbox中打开)。图片关闭后,浏览器网址变回原始网页。

你有什么想法他们如何实现这种行为?

+2

可能的重复[如何Github更改页面和URL如此顺利没有AJAX?](http://stackoverflow.com/questions/5216314/how-is-github-changing-pages-and-the-url-如此顺利 - 没有ajax) – Quentin 2011-05-05 15:27:01

+1

不是一个重复的,但很好的补充信息:[什么是Facebook和新的Twitter网址shebang/hashbang(#!)?](http://stackoverflow.com/questions/3009380/whats-the-shebang-hashbang-in-facebook-and-new-twitter-urls-for) – Jeremy 2011-05-05 15:29:45

+0

@DAvid谢谢你的提示!我认为这是开始寻找这个的好地方!很好的帮助! – Nicolas 2011-05-05 15:48:21

回答

1

您可以在URL中这样结尾操纵具有价值:

var hashVal = 'somevalue'; 
window.location.hash = '#' + hashVal; 

然后是网址将成为www.something.com/#somevalue

+1

谢谢,但正如我在帖子中解释的,我已经尝试过这种方法,并且工作正常。 我很有趣,没有哈希做!正如Facebook一样。应该有可能不是吗? – Nicolas 2011-05-05 15:45:14

+0

@Nicolas,Facebook使用遍地! – Neal 2011-05-05 15:45:41

+0

不是,或者至少我没有看到他们在我的网址上。是否浏览器以某种方式隐藏了散列? – Nicolas 2011-05-05 15:47:41

0

你可以操纵的哈希值尼尔指出。但我会建议使用一个库来做同样的事情。这里有一个,我使用

http://developer.yahoo.com/yui/history/

散列值的URL主要用于操纵后退按钮和书签整合。希望这可以帮助。

8

HTML5的一项功能支持您所指的内容。见http://spoiledmilk.dk/blog/html5-changing-the-browser-url-without-refreshing-page

一些系统通过检查window.history.pushState来实现这一点,如果是的话,使用它,否则会回退到hashtags。如果搜索引擎优化是关注,使用#!代替 #。见 http://code.google.com/intl/es/web/ajaxcrawling/docs/getting-started.html

希望有所帮助。

+0

+1这就是答案! – Shea 2012-02-22 14:23:35