【问题标题】:onbeforeUnload without return or no dialogbox showonbeforeUnload 不返回或不显示对话框
【发布时间】:2012-11-03 06:10:22
【问题描述】:

我正在使用 Richfaces 在 Java EE 中开发一个 Web 应用程序。 有一个链接,可以注销用户。 当用户离开页面或关闭浏览器时,我应该注销用户,因为我必须知道他何时离开我们的页面。 这是一个sn-p:

  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 "" 效果很好,只是我不想显示对话框。 我怎么能做这个问题?

【问题讨论】:

    标签: javascript jakarta-ee browser richfaces


    【解决方案1】:

    使用synchronous 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-16
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多