2010-10-22 37 views
16

起初我認爲hash hash是一個需求,但是從facebook的最新更新來看,我正在考慮其他方面。如何更改窗口的位置而不重新加載和#hack?

原始哈希破解(我不確定這是否是正確的術語)是通過更改location.hash,可以在不刷新頁面的情況下保存URL中的狀態。 Google的應用程序和Facebook以及最近的#NewTwitter廣泛使用了這一功能。然而,今天我注意到,如果您使用「現代」瀏覽器(如Chrome或Firefox),Facebook不再擁有這個「#」。我再次檢查,他們不重新加載分別使用開發工具和螢火蟲。

隨着最少的搜索在計算器中,最接近解決方案的是使用Flash--但是我禁用了Flash並且facebook.com仍然像魅力一樣工作。 從Chrome 8 dev和firefox 4 beta的覆蓋率來看,我想知道這可能與HTML5時代的API有關,但Facebook中的代碼並不具備調試能力以找出他們做了什麼。

由於這就像我在這裏問的第一個問題,我想知道你們中的任何人是否已經解決了這個問題。

謝謝你們。

P.S.不適用於IE8,尚未在IE9測試版上測試。

+0

什麼「不適用於IE8」? :)這由Google的AJAX抓取指南覆蓋。他們在http://gwt.google.com/samples/Showcase/Showcase.html上有展示,這在這裏可能很有用。 – bzlm 2010-10-22 13:32:55

+1

我不知道這是否是答案,但HTML5中有[客戶端數據存儲](http://dev.w3.org/html5/webstorage/)。也許這是利用。在Safari(我假設Chrome)中有開發人員工具的「存儲」部分。也許這會提供一些提示。 – user113716 2010-10-22 14:06:17

+0

@bzlm記下網址中的#。 – itsnotvalid 2010-10-25 06:24:21

回答

20

Facebook使用HTML5中的歷史api。從this blog post你可以看到這是如何工作的。基本上他們打電話就像下面的一個改變網址而不重新加載頁面。

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

這裏是HTML5工作規範草案一下:http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#the-location-interface

可悲的是,IE9不支持此API。 Chrome和FF的新版本全面支持。

+0

感謝您的回答,我想我需要深入挖掘dev規格。 - > http://dev.w3.org/html5/spec/history.html – itsnotvalid 2010-10-25 06:24:50

+2

我剛剛發現這個jquery插件,你可能想看看。處理這個看起來很不錯,再加上它降級以處理不支持HTML5的瀏覽器。 http://www.asual.com/jquery/address/ – 2010-10-25 14:16:52

+1

ie9。如何在ie9中實現 – 2012-06-25 10:21:36

相關問題