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 に答える