1

我已经在我的测试站点上启动并运行了 PJax - 它很有效。然而,它严重依赖于许多 javascript 小部件,因此会泄漏内存。

由于我现在没有时间重新编写每个小部件,我认为一个简单的解决方案是在 20 个 pjax 页面转换之后进行正常的页面加载。一个简单的计划……但似乎不可能。

$.pjax.disable();

....仍然通过 AJAX 获取内容,但不更改页面。

$(document).pjax();.

...不会改变行为

$.pjax.handleClick = function (event, container, options) { return; };

...不会改变行为

$.pjax.state.timeout = 0;

...不会改变行为

delete $.pjax;

...打破导航

$.pjax.defaults.timeout=0;

...不会改变行为

如何暂停 pjax?

4

2 回答 2

2

如果添加监听器pjax:beforeSend,则可以捕获请求的 URL,设置location.href自己并return false取消 pjax 行为。这就是我使用以下代码的方式:

var pageLoadCounter = 0;
var MAX_PAGE_LOADS = 20;

$(".pjaxContainer").on("pjax:beforeSend", function (e, xhr, settings) {
    if (++pageLoadCounter > MAX_PAGE_LOADS) {
        // URI can be found at https://github.com/medialize/URI.js
        var uri = URI(settings.url);

        // Remove _pjax from query string before reloading
        uri.removeSearch("_pjax");

        location.href = uri.toString();
        return false;
    }
});
于 2013-08-15T18:05:43.430 回答
0

我发现更改 pjax 容器 div 的 id 给了我想要的结果——尽管这看起来有点杂乱无章。也可以通过将 ajax 请求的超时更改为 0 - 但我仍然需要弄清楚如何做到这一点。

我确实在PJax github 页面上询问过这个问题,但到目前为止还没有收到回复。

于 2013-06-12T10:12:38.100 回答