![](https://habrastorage.org/storage2/268/1d5/330/2681d5330db27b8e05a056e244927749.png)
Для проведения тестирования была выбрана февральская база GeoLite Country, бесплатная версия GeoIP Country от MaxMind.
В тестировании приняли участие несколько популярных решений и мой «велосипед» на эту тему.
User
if ($error['type'] == E_ERROR || $error['type'] == E_PARSE || $error['type'] == E_COMPILE_ERROR){…}
илиif(in_array($error['type'], array(E_ERROR, E_PARSE, E_COMPILE_ERROR)) {…}
window.history
. History имеет несколько методов, событий и свойств, которыми мы можем управлять из JavaScript. Каждая страница таба(Document object) представляет собой объект коллекции History. Каждый элемент истории состоит из URL и/или объекта состояния (state object), может иметь заголовок (title), Document object, данные форм, позиция скролла и другую информацию, связанную со страницей. window.history.length
: Количество записей в текущей сессии историиwindow.history.state
: Возвращает текущий объект историиwindow.history.go(n)
: Метод, позволяющий гулять по истории. В качестве аргумента передается смещение, относительно текущей позиции. Если передан 0, то будет обновлена текущая страница. Если индекс выходит за пределы истории, то ничего не произойдет.window.history.back()
: Метод, идентичный вызову go(-1)
window.history.forward()
: Метод, идентичный вызову go(1)
window.history.pushState(data, title [, url])
: Добавляет элемент истории. window.history.replaceState(data, title [, url])
: Обновляет текущий элемент истории