如何查找浏览器是否支持History.Pushstate?

Ash*_*wal 43 javascript hash cross-browser pushstate

我想在不重新加载页面的情况下更改URL.我发现可能的解决方案是

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

但有些浏览器如Firefox 3.5,IE6 +不支持这一点,所以对他们来说解决方案是

var uri = window.location.href;

但问题是如何发现浏览器是否支持history.pushstate?

TRY CATCH是可能的解决方案还是其他任何东西.

Kon*_*Kon 82

if (history.pushState) {
  // supported.
}
Run Code Online (Sandbox Code Playgroud)

最快的测试是在浏览器控制台中运行它以查看它是否受支持:

if (history.pushState) { alert('supported'); }
Run Code Online (Sandbox Code Playgroud)

另请注意,在FF中typeof(history.pushState)返回"function",而在IE中则返回"undefined"

  • 对于Firefox,当推送堆栈中没有实际历史记录时(当您是域的根目录时),history.pushState实际上返回"未定义".我不知道这是不是一个bug,但它真的很烦人. (2认同)