在IE9中使用history.js

时间:2013-10-28 12:12:49

标签: html5 internet-explorer-9 pushstate history.js

在我的一个应用程序中,我使用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);
}

1 个答案:

答案 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')