Использование history.js с IE9
В одном из моих приложений я использую window.history.pushState()
способ обновить окно URL. Но, как IE < 10
не поддерживает API истории HTML5, я искал альтернативу. Ответы на множество других вопросов по SO предлагается использовать history.js
плагин.
Из документации, предоставленной плагином history.js, его использование не совсем понятно. Я добавил плагин к <head></head>
раздел в моих шаблонах, но на IE9 я все еще получаю сообщение об ошибке:
SCRIPT438: Object doesn't support property or method 'pushState'
params.js, line 37 character 5
функция, которая выдает ошибки, выглядит следующим образом
/**
* updates the window url according to the given parameters.
*/
function updateUrl(params) {
var path = window.location.pathname;
var url = $.param.querystring(path, params);
url = decodeURIComponent(new_url).replace("#", "", "g");
window.history.pushState(null, null, new_url);
}
1 ответ
Вам нужно инициализировать переменные History и State, чтобы это работало.
(function(window, undefined) {
// Define variables
var History = window.History,
State = History.getState();
// Bind statechange event
History.Adapter.bind(window, 'statechange', function() {
var State = History.getState();
});
})(window)
и теперь вы можете использовать pushState
Метод для всех браузеров выглядит следующим образом:
History.pushState(null, null, '?your=hash')