有没有办法检查浏览器是否支持使用JavaScript支持“HTML5 History API”。
我是否必须使用if语句中的长条件列表检查所有浏览器及其版本。 或者只是像使用'if'语句检查任何函数对象就足够了......
答案 0 :(得分:29)
检查全局历史对象上是否存在pushState()
方法就足够了。
function supports_history_api() {
return !!(window.history && history.pushState);
}
对于更一般的HTML 5特征检测,我会看看Modernizer
http://diveintohtml5.info/detect.html#modernizr
这将使您的代码与每个测试的混乱细节隔离开来,使代码更易读,更不容易出错。使用页面上的Modernizer脚本,您只需:
if (Modernizr.history) {
// history management works!
} else {
// no history support :(
// fall back to a scripted solution like History.js
}
答案 1 :(得分:3)
检查history.pushState
和history.replaceState
对象是否存在应该足够了,因为通常情况下通常就足够了。
答案 2 :(得分:0)
您可以使用canisuse.js脚本来检测您的浏览器是否支持历史记录
caniuse.history()
答案 3 :(得分:-1)
您可以查看天气是否已注册功能:
if (typeof history.pushState != 'undefined') {
//Enabled
}
然后只需替换//启用你想做的任何事情,如果它支持。