1

在我的一个应用程序中,我使用window.history.pushState()方法来更新窗口 URL。但由于IE < 10不支持 HTML5 的 history 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);
}
4

1 回答 1

0

您需要初始化 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')
于 2013-10-29T11:41:21.513 回答