1

jQuery BlockUIプラグインには、単純なコードですべての AJAX 呼び出しにアタッチする非常に優れた機能があります。

$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);

リンクをクリックするなど、同様のアプローチを使用して、各ナビゲーションに blockUI オーバーレイを表示できますか?

これはイベントを使用して行う必要があると思いますが、これでunload失敗しました。

$(window).on('unload', function()
{
    $.blockUI;
});

ナビゲーションの際、blockUI オーバーレイは表示されません (新しく読み込まれたページには表示されないため、非表示にすることは気にしません)。

私もできます:

$(window).on('unload', function()
{
    console.log('$.blockUI;');
    $.blockUI;
    console.log('Bye!');
});

と両方$.blockUI;Bye!メッセージがコンソールにはっきりと表示されますが、blockUI オーバーレイの兆候はありません。

多くのブラウザがalert()の表示をブロックしていることを読みましたunload。blockUIもカバーしていますか?div やその他の DOM 要素といくつかのスタイリングの集まりにすぎないので、そうすべきではありませんか?

Chrome 27、Internet Explorer 10、Firefox 21 でテスト済み。

2、3 年前、古いプロジェクトで、私は上記の機能を達成することができましたが、特定のボタンとメニュー項目に blockUI の表示を入札することによって純粋にそこで行われました。AJAX呼び出しと同じように、これをできるだけ避けてグローバルにしたいと思います。

4

1 に答える 1

4

2つの問題があると思います。$.blockUI()最初の問題は、関数を呼び出して目的の結果を生成する必要があることだと思います。

2 つ目の問題は、イベントが遅すぎるように見えることです。beforeunloadイベントを検討してください:

$(window).on('beforeunload', function()
{
    $.blockUI();
});

イベントを使用するjsfiddleを作成しましたが、beforeunload非常にうまく機能します。

于 2013-07-02T09:44:37.843 に答える