在我的一个应用程序中,我使用window.history.pushState()
方法更新窗口URL。但由于IE < 10
不支持HTML5的历史API,我一直在寻找替代方案。关于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);
}
答案 0 :(得分:0)
您需要初始化历史记录和状态变量才能使其正常工作。
(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')