在后退按钮上使用 pjax 重新初始化 javascript

reinitialize javascript with pjax on back button

"done" 下面的回调在单击按钮时运行良好。但是使用浏览器后退按钮,不会再次调用 done 回调。

$.pjax({
        url: $this.attr("href"), 
        container: '#div-section', 
        push: true
}).done(function() {
        $object.init();                 
});

除了完成之外,还有其他方法可以在 pjax 端触发其他 javascript(因为它不起作用)吗?

已找到解决方案,但我猜页面中可能只有一个这样的处理程序 -

$(document).on("ready pjax:success", function(){
        //initialize all javascripts here
});

编辑

以上解决方案导致对 pjax 调用进行双重绑定,一次在 pjax:success 内,然后第二次在 done 事件回调内。要在 back / forward 或 pjax 上只执行一个绑定,我们可以执行以下操作。在这种情况下,globalEventDirection 可用于在 pjax:success 内有条件地绑定,让 init 在单击按钮时完成。但是使用后退和前进按钮,初始化将在 pjax:success

内完成
    globalEventDirection = undefined;
    $(document).on("pjax:popstate", function(event){
            globalEventDirection = event.direction;
        });

    $(document).on("pjax:success", function(event){
        if(globalEventDirection === "back" || globalEventDirection === "forward" ) {
            //reinitialize javascript                   
            globalEventDirection = undefined;
        }
    });