0
var unloadOK = "false";//used as variable when data need to be send to the server
window.onbeforeunload = CheckBeforeUnload;
window.onunload = CheckUnload 

function CheckBeforeUnload(){
  document.getElementById("ContentPlayer").CheckUnload("");
  return "Are you sure you want to exit?"
}

function CheckUnload(){
  unloadOK = "true"; 
  pause(1000);

  alert("session saved");
}

function pause(millis) 
{
  var date = new Date();
  var curDate = null;

  do { 
    curDate = new Date(); 
  } while(curDate-date < millis);
} 

上記のコードは次のとおりです。ユーザーがブラウザを閉じようとしたときにデータを送信しようとしています。
Onunload メソッドは IE7 と IE8 では機能しますが、IE9 と FF4 では機能しません。アプリケーションは Flex 3.0 SDK に組み込まれています。

ブラウザが閉じているときにデータを確実に送信するソリューションがあり、onunload がすべてのブラウザで一貫して動作する方法はありますか?

4

1 に答える 1

0

上記のコードは次のとおりです。ユーザーがブラウザを閉じようとしたときにデータを送信しようとしています。Onunload メソッドは IE7 と IE8 では機能しますが、IE9 と FF4 では機能しません。アプリケーションは Flex 3.0 SDK に組み込まれています。

どの程度問題になるかはわかりませんが、関数呼び出しをハンドラーとして割り当てる前に配置してみてください。

function CheckBeforeUnload(){
  document.getElementById("ContentPlayer").CheckUnload("");
  return "Are you sure you want to exit?"
}

おそらく、のalert()代わりに here が必要ですreturn

ブラウザが閉じているときにデータを確実に送信するソリューションがあり、onunload がすべてのブラウザで一貫して動作する方法はありますか?

残念ながら、ユーザーはページが表示されているタブを単純に閉じて回避できます。また、たとえば、Google Chrome のプロセス モニターを使用してタブを強制終了することもできます。最後に、アプリケーションを強制終了できます。最終的な解決策として、この機能に依存するのは良くありません。

于 2011-05-13T02:42:19.947 に答える