4

私はリッチフェイスを備えたJavaEEでWebアプリケーションを開発しています。ユーザーをログアウトするリンクがあります。ユーザーがページから移動したり、ブラウザをシャットダウンしたりした場合、ユーザーがいつページを離れたかを知る必要があるため、ユーザーをログアウトする必要があります。スニペットは次のとおりです。

  function fireEvent(obj,evt){

      var fireOnThis = obj;
      if( document.createEvent ) {
          var evObj = document.createEvent('MouseEvents');
          evObj.initEvent( evt, true, false );
          fireOnThis.dispatchEvent(evObj);
      } else if( document.createEventObject ) {
          fireOnThis.fireEvent('on'+evt);
      }
  }

  var popit = true;
  window.onbeforeunload = function() {
      if(popit == true) {
         fireEvent(document.getElementById("logout_form:logout_link"),'click');
      }
  }

これはブラウザを閉じる場合にのみ機能し、ナビゲーションや更新は機能しません。fireEvent(...)を変更して""を返しました。すべてがうまくいきます。fireEvent(...)の後にreturn ""と入力すると、うまく機能しますが、ダイアログボックスを表示したくありません。どうすればこの問題を解決できますか?

4

1 に答える 1

1

同期AJAX 呼び出しを使用してから、シャットダウン メソッドをコールバックに入れます。

    window.onbeforeunload = function() {
   // This template uses no error checking, it's just concept code to be
   // expanded on.

   // Create a new XMLHttpRequest object
   var AJAX=new XMLHttpRequest();  

   // Handle ready state changes ( ignore them until readyState = 4 )
   AJAX.onreadystatechange= function() { if (AJAX.readyState!=4) return false; }

   // we're passing false so this is a synchronous request.
   // The script will stall until the document has been loaded.
   // the open statement depends on a global variable titled _userID.
   AJAX.open("GET", 'about:blank', false);
   AJAX.send(null);
}
于 2012-12-22T01:58:42.877 に答える