如何使 pjax:popstate 像简单的 PJAX 调用一样工作
How to make pjax:popstate work like a simple PJAX call
在使用pjax中的popstate时,我希望从服务器重新加载内容,而不是被浏览器的缓存内容替换。如果正在应用缓存内容,则缓存内容中的 <script>
根本不起作用。那么,当我们简单地点击浏览器的 Back/Forward 按钮时,有什么方法可以强制对服务器进行正常的 PJAX 调用而不是使用缓存数据?
请帮忙。
谢谢
请注意文件 jquery.pjax.js 中的第 476 到 491 行 link:jQuery PJAX by Chris Wanstrath (defunkt)。 if
下面的代码实际上调用了Cached Contents,而else
下面的代码就是我们想要的。
if (contents) {
container.trigger('pjax:start', [null, options])
pjax.state = state
if (state.title) document.title = state.title
var beforeReplaceEvent = $.Event('pjax:beforeReplace', {
state: state,
previousState: previousState
})
container.trigger(beforeReplaceEvent, [contents, options])
container.html(contents)
container.trigger('pjax:end', [null, options])
} else {
pjax(options)
}
那么,现在你知道我们要做什么了吧!是的,只需删除除此行之外的所有内容:
pjax(options)
一切顺利!奇怪的是没有人给我这个解决方案。但是,我终于自己找到了解决方案,我认为这会对很多人有所帮助。
谢谢,无论如何。
无需修改源码。您可以将 pjax 配置为再次从服务器加载,而不是通过将其 maxCacheLength
设置为 0
来使用缓存
$.pjax.defaults.maxCacheLength = 0;
在使用pjax中的popstate时,我希望从服务器重新加载内容,而不是被浏览器的缓存内容替换。如果正在应用缓存内容,则缓存内容中的 <script>
根本不起作用。那么,当我们简单地点击浏览器的 Back/Forward 按钮时,有什么方法可以强制对服务器进行正常的 PJAX 调用而不是使用缓存数据?
请帮忙。 谢谢
请注意文件 jquery.pjax.js 中的第 476 到 491 行 link:jQuery PJAX by Chris Wanstrath (defunkt)。 if
下面的代码实际上调用了Cached Contents,而else
下面的代码就是我们想要的。
if (contents) {
container.trigger('pjax:start', [null, options])
pjax.state = state
if (state.title) document.title = state.title
var beforeReplaceEvent = $.Event('pjax:beforeReplace', {
state: state,
previousState: previousState
})
container.trigger(beforeReplaceEvent, [contents, options])
container.html(contents)
container.trigger('pjax:end', [null, options])
} else {
pjax(options)
}
那么,现在你知道我们要做什么了吧!是的,只需删除除此行之外的所有内容:
pjax(options)
一切顺利!奇怪的是没有人给我这个解决方案。但是,我终于自己找到了解决方案,我认为这会对很多人有所帮助。
谢谢,无论如何。
无需修改源码。您可以将 pjax 配置为再次从服务器加载,而不是通过将其 maxCacheLength
设置为 0
$.pjax.defaults.maxCacheLength = 0;