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

46

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

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

但是一些浏览器如Firefox 3.5,IE6+不支持这个方法,所以对于它们的解决方案是

var uri = window.location.href;

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

TRY CATCH是可能的解决方案还是其他什么东西?

1个回答

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

最快的测试方法是在浏览器控制台中运行以下代码以查看是否支持:

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

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


2
使用Firefox时,当推送堆栈中实际上没有历史记录(当您是域的根目录时),history.pushState实际上会返回“undefined”。我不知道这是否是一个错误,但它真的很让人恼火。 - Gael.D
修改此答案。使用 if(typeof window.history.pushState != 'undefined') 来避免一些旧手机上出现错误信息。 - stonyau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接