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

Javascript PJax-如何关闭修改后的行为,javascript,jquery,pjax,Javascript,Jquery,Pjax,我已经在我的测试站点上安装并运行了PJax——它非常有效。然而,它严重依赖大量javascript小部件,因此会泄漏内存 因为我现在没有时间重新编写每个小部件,所以我认为一个简单的解决方案是在20次pjax页面转换之后进行正常的页面加载。一个简单的计划……但似乎不可能 $.pjax.disable(); ..仍然通过AJAX获取内容,但不会更改页面 $(document).pjax();. …不会改变行为 $.pjax.handleClick = function (event, conta

我已经在我的测试站点上安装并运行了PJax——它非常有效。然而,它严重依赖大量javascript小部件,因此会泄漏内存

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

$.pjax.disable();
..仍然通过AJAX获取内容,但不会更改页面

$(document).pjax();.
…不会改变行为

$.pjax.handleClick = function (event, container, options) { return; };
$.pjax.state.timeout = 0;
delete $.pjax;
…不会改变行为

$.pjax.handleClick = function (event, container, options) { return; };
$.pjax.state.timeout = 0;
delete $.pjax;
…不会改变行为

$.pjax.handleClick = function (event, container, options) { return; };
$.pjax.state.timeout = 0;
delete $.pjax;
…中断导航

$.pjax.defaults.timeout=0;
…不会改变行为

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

如何挂起pjax?

我发现更改pjax容器div的id可以得到所需的结果——尽管这看起来有点困难。也可以将ajax请求的超时更改为0,但我仍然需要解决如何做到这一点


我确实询问了,但到目前为止还没有收到回复。

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