2011-07-26 103 views
40

我想在不重新加載頁面的情況下更改URL。我找到的可能解決方案是如何查找瀏覽器是否支持History.Pushstate?

window.history.pushState('page2','Title','/page2.php');

但有些瀏覽器如Firefox 3.5,IE6 +不支持此功能,所以對他們的解決方案是

變種的uri = window.location.href;

但問題是如何發現瀏覽器是否支持history.push狀態?

是TRY CATCH是可能的解決方案或其他任何東西。

回答

78
if (history.pushState) { 
    // supported. 
} 

最快的測試是在瀏覽器控制檯運行這個,看看它是否支持:

if (history.pushState) { alert('supported'); } 

還要注意,在FF typeof(history.pushState)返回「功能」,而IE則返回「未定義」

+2

使用Firefox時,當推送堆棧中沒有實際歷史記錄時(當您是域的根目錄時),history.pushState實際返回「未定義」。我不知道這是否是一個錯誤,但它真的很煩人。 –

相關問題