PJax - 如何关闭修改后的行为

时间:2013-06-07 20:34:13

标签: javascript jquery pjax

我已经在我的测试网站上启动并运行了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?

2 个答案:

答案 0 :(得分:2)

如果为pjax:beforeSend添加侦听器,则可以捕获请求的URL,自己设置location.hrefreturn 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;
    }
});

答案 1 :(得分:0)

我发现改变pjax容器div的id给了我想要的结果 - 尽管这看起来像是一个小问题。将ajax请求的超时更改为0也是可能的 - 但我仍然需要弄清楚如何执行此操作。

我确实问了PJax github page这个问题,但到目前为止还没有收到回复。