pjax更改历史记录而不进行实际请求/使用pjax而不连接到服务器

时间:2014-04-25 19:33:59

标签: jquery ajax pjax

我正在使用pjax,我理解它是如何工作的。我用JS处理所有pjax逻辑,在某些情况下我想"假"没有pjax实际获取任何数据的新页面加载。

我的问题是,如何在没有pjax实际连接到服务器的情况下使用pjax设置新的历史记录条目?基本上像往常一样使用pjax,但没有连接到服务器。

我知道这不是pjax的实际目的或用途,但我不想加载history.js或类似的东西只是因为我的这个小例外。从理论上讲,这也应该由pjax处理......

2 个答案:

答案 0 :(得分:1)

尝试使用history.pushState()history是内置的HTML5功能,允许您在不重新加载页面的情况下添加新的历史记录条目。因为调用该函数实际上不会触发popstate事件,所以不应该影响pjax。

答案 1 :(得分:1)

我建议使用 history.replaceState(newUrl),否则,如果你使用history.pushState(newUrl),你还应该处理"后退按钮"事件正常。另请参阅支持哪些浏览器http://caniuse.com/#search=pushstate。还要考虑到,在某些浏览器中,由于安全原因,它无法在全屏模式下工作。

我建议编写自己的函数,如:

var historyChangeState = function (newUrl) {
    history.replaceState(newUrl)
    // something else to manage
}

所以你将来可以调整它。