如何确定浏览器是否支持js pushState函数?

Vov*_*van 5 html javascript

我想通过js脚本使用动态URL更新:

window.history.pushState("string", "Title", "/new-url");
Run Code Online (Sandbox Code Playgroud)

但是如果浏览器是旧的并且不支持此功能,那么它应该只是重定向到新的URL.

有没有简单的方法来检查它?

Ste*_*isi 6

你只需检查:

if (history.pushState) {

}
Run Code Online (Sandbox Code Playgroud)


blu*_*lue 5

try {
    window.history.pushState("string", "Title", "/new-url");
} catch ( e ) {
    window.location = "/new-url";
}
Run Code Online (Sandbox Code Playgroud)


rai*_*7ow 5

最简单(也是最高效的):

if ('history' in window && 'pushState' in history) { // available
Run Code Online (Sandbox Code Playgroud)

尽管如此,我还是建议使用一些既定的历史管理解决方案,比如History.js