最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How could I change window's location without reloading and # hack? - Stack Overflow

programmeradmin4浏览0评论

At first I thought that hash hack is a requirement, however judging from the recent updates from facebook, I am thinking otherwise.

The original hash hack (I am not sure if this is the correct term) is that by changing location.hash, one may save a state in the URL without refreshing the page. That is extensively used by Google's apps, and Facebook, and lately #NewTwitter. However today I noticed that Facebook no longer have this "#" if you use a "modern" browser - like chrome or firefox. I double checked that they are not reloading by using developer tools and firebug respectively.

With a minimal search in stackoverflow, the closest one to the solution is using Flash - however I disabled Flash and facebook still works like a charm. Judging from the coverage in chrome 8 dev and firefox 4 beta, I wonder that could be related to HTML5-era APIs, but the code in Facebook is not of my capacity to debug to find out what they did.

Since this is like the first question I ask here, I wonder if any of you may have already solved this problem.

Thanks guys.

P.S. Doesn't work on IE8, haven't tested on IE9 beta.

At first I thought that hash hack is a requirement, however judging from the recent updates from facebook, I am thinking otherwise.

The original hash hack (I am not sure if this is the correct term) is that by changing location.hash, one may save a state in the URL without refreshing the page. That is extensively used by Google's apps, and Facebook, and lately #NewTwitter. However today I noticed that Facebook no longer have this "#" if you use a "modern" browser - like chrome or firefox. I double checked that they are not reloading by using developer tools and firebug respectively.

With a minimal search in stackoverflow, the closest one to the solution is using Flash - however I disabled Flash and facebook.com still works like a charm. Judging from the coverage in chrome 8 dev and firefox 4 beta, I wonder that could be related to HTML5-era APIs, but the code in Facebook is not of my capacity to debug to find out what they did.

Since this is like the first question I ask here, I wonder if any of you may have already solved this problem.

Thanks guys.

P.S. Doesn't work on IE8, haven't tested on IE9 beta.

Share Improve this question edited Jun 3, 2013 at 14:17 Kevin Reid 43.7k13 gold badges94 silver badges121 bronze badges asked Oct 22, 2010 at 13:20 itsnotvaliditsnotvalid 2451 gold badge2 silver badges10 bronze badges 2
  • What "Doesn't work on IE8"? :) This is covered by Google's AJAX crawling guidelines. They have a showcase at gwt.google.com/samples/Showcase/Showcase.html which may be useful here. – bzlm Commented Oct 22, 2010 at 13:32
  • 1 I don't know if this is the answer, but there is client-side data storage in HTML5. Perhaps that is utilized. In Safari (and I assume Chrome) there's a "Storage" section of the developer tools. Perhaps that will give some hints. – user113716 Commented Oct 22, 2010 at 14:06
Add a comment  | 

1 Answer 1

Reset to default 21

Facebook is using the history api in HTML5. From this blog post you can see how this works. Basically they are making calls like the one below to change the url without reloading the page.

window.history.pushState("object or string", "Title", "/new-url");

Here is the HTML5 working draft spec about it: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#the-location-interface

Sadly, IE9 does not support this api. New versions of Chrome and FF have full support.

发布评论

评论列表(0)

  1. 暂无评论