Проверить совместимость браузера для поддержки API истории HTML5? - PullRequest
13 голосов
/ 25 февраля 2012

Есть ли способ проверить браузер, поддерживает ли он «HTML5 History API», используя JavaScript.

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

Ответы [ 4 ]

29 голосов
/ 25 февраля 2012

Проверка наличия метода 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
}
3 голосов
/ 25 февраля 2012

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

0 голосов
/ 16 июня 2016

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

caniuse.history()
0 голосов
/ 25 февраля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...