1

私はしばらくの間探していましたが、探していたものがまったく見つかりませんでした。私のWebページにはレポートが保存されており、ユーザーはこれらのレポートを保存できます。

jqueryまたはjavascriptonunload/ onbeforeunloadを使用して、ブラウザを閉じたりナビゲートしたりしたときにレポートを保存するか、保存せずに続行するかをユーザーに尋ねるメソッドを探しています。

onbeforeunloadを使用すると、ナビゲーションを停止して手動で保存する機能をユーザーに提供できますが、保存はダイアログボックスから実行する方がよいでしょう。onbeforeunloadのもう1つの問題は、タグをクリックするとonbeforeunloadメソッドも呼び出されることです。

保存は非同期であり、数ミリ秒かかります。

どんな提案でも大歓迎です。

よろしく、バイロンコブ。

4

2 に答える 2

2

それはおそらくsyncronizedAjax呼び出しが合理的である唯一の時です。

window.onbeforeunload = function(){
   $.ajax({
      url:      'somewhere',
      type:     'POST',
      dataType: 'text',
      async:    false,
      data:     'you_data_here',
      success:  function(data){
      }
   });
};

そうすれば、ブラウザがアンロードをブロックしている間に、大量のデータをサーバーに転送できるはずです。それにはいくつかの欠点があります。最も明白なことは、転送するデータの量と所要時間によっては、おそらくそれほど優れたユーザーエクスペリエンスではないことです。
もう1つは、この方法が一部の(古い)ブラウザーでは使用できないことです。

良い代替策は、時々または各アクションの後にデータを自動保存することです。

于 2010-10-19T09:34:42.693 に答える
2
      $(document).ready(function() {
             //below turns off popup on a tags, buttons, :input is for a submit in ie and img tags
             $("a").click(RemoveUnload);
             $("button").click(RemoveUnload);
             $(":input").click(RemoveUnload);
             $("img").click(RemoveUnload);
         });

       RemoveUnload(){window.onbeforeunload = null;}
于 2011-11-17T04:09:10.050 に答える