Проверить совместимость браузера для поддержки API истории HTML5?

Есть ли способ проверить браузер, поддерживает ли он "API истории HTML5" с помощью JavaScript.

Нужно ли проверять все браузеры и его версии с длинным списком условий в инструкции if. Или просто проверить любой объект функции, используя оператор "if" достаточно......

Ответ 1

Проверка существования метода pushState() для глобального объекта истории должна быть достаточной.

function supports_history_api() {
  return !!(window.history && history.pushState);
}

Для более общего определения функции HTML 5 я бы посмотрел на Modernizer

http://diveintohtml5.info/detect.html#modernizr

Это изолирует ваш код от беспорядочной специфики каждого теста, делая код более читаемым и менее подверженным ошибкам. С помощью Modernizer script на вашей странице вы просто выполните:

if (Modernizr.history) {
  // history management works!
} else {
  // no history support :(
  // fall back to a scripted solution like History.js
}

Ответ 2

Проверка наличия объектов history.pushState и history.replaceState должна быть достаточной, поскольку в целом это достаточно для обнаружения функции вообще.

Ответ 3

Вы можете использовать canisuse.js script, чтобы определить, поддерживают ли ваши браузеры историю или нет

caniuse.history()

Ответ 4

Вы можете проверить погоду или не зарегистрировать функцию:

if (typeof history.pushState != 'undefined') {
    //Enabled
}

Затем просто замените//Включено тем, что вы хотите сделать, если оно поддерживается.