我正在使用pjax,我理解它是如何工作的。我用JS处理所有pjax逻辑,在某些情况下我想"假"没有pjax实际获取任何数据的新页面加载。
我的问题是,如何在没有pjax实际连接到服务器的情况下使用pjax设置新的历史记录条目?基本上像往常一样使用pjax,但没有连接到服务器。
我知道这不是pjax的实际目的或用途,但我不想加载history.js或类似的东西只是因为我的这个小例外。从理论上讲,这也应该由pjax处理......
答案 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
}
所以你将来可以调整它。