2013-12-17 340 views
1

除了JavaScript之外,當用戶直接關閉瀏覽器而不註銷時,是否有其他任何選項會觸發Session_End()事件。如果我所有的時間都檢查客戶端是否向服務器發出請求,或者不是,那麼當用戶關閉瀏覽器時,服務器就不會收到請求。所以如果可能的話,我該如何執行它?此外,我是否可以始終檢查用戶是否正在查看我的任何頁面,如果不能,我是否可以提出Session_End()事件?瀏覽器關閉事件

+0

見http://stackoverflow.com/questions/805463/JavaScript的到入住時,在瀏覽器窗口,是關閉。 –

回答

1

,您無法檢查用戶正在做什麼或者何時關閉瀏覽器。 這顯然違反了用戶的用戶和數據安全權限。此外,這樣的功能將依賴於瀏覽器,因此很難實現,因爲每個瀏覽器都有自己的界面和哲學。

你可以做的是在javascript中實現一個函數,它每隔一分鐘向服務器發送一個信號,告訴服務器用戶仍然活動。

然後,您可以存儲用戶最後一次信號的時間。這樣,如果您在最後一分鐘左右沒有收到信號,您會看到用戶處於非活動狀態。

+0

你可以給我詳細的解決方案,因爲我是一個新的由asp.net? – Reshad

+1

查看本教程:http://msdn.microsoft.com/en-us/library/bb924552(v=vs.110).aspx – RononDex

+0

我看到了您的教程,並從中可以將請求從客戶端發送到服務器。但我想在服務器中實現一個函數,該函數在一個時間間隔內檢查任何客戶端是否連接,如果結果返回null,它將調用Session.Abandon()。我是新來的asp.net。那麼你可以幫我用代碼和詳細描述嗎? – Reshad

-1

hii javascript中有一個事件用於查找瀏覽器關閉事件。

但它不適用於所有瀏覽器。

他們就是這樣的例子。

<HEAD> 
    <TITLE> TEST</TITLE> 

</HEAD> 

<script type="text/javascript"> 

      javascript:window.history.forward(1); 
      var temp = true; 
      document.onkeydown = keyDownPress; 
      document.onmousedown = keyDownPress; 


    var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; 
      //alert(is_chrome); 
    if(is_chrome){ 
        window.onbeforeunload = function(e) { 
        // confirmExit(e); 
        alert("1"); 
        alert("2"); 
        alert("3"); 

         return "You are going to close?"; // you can make this dynamic, ofcourse... 
        } 
     }else{ 

    window.onbeforeunload = confirmExit; 
} 

      /*if (navigator.userAgent.indexOf('AppleWebKit') > -1)   window.onbeforeunload = confirmExit; 
else Event.observe(window, 'beforeunload', confirmExit);*/ 
    /* 
    var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; 

    if(is_chrome){ 
    window.onbeforeunload = function(e) { 
    confirmExit(e); 
    return "Are you sure you want to leave this page ?"; // you can make this     dynamic, ofcourse... 
    };}else{ 
    window.onbeforeunload = confirmExit; 
     }*/ 

     /* if (window.addEventListener) { // all browsers except IE before version 9 
      window.addEventListener ("beforeunload", OnBeforeUnLoad, false); 
     } 
     else { 
      if (window.attachEvent) { // IE before version 9 
       window.attachEvent ("onbeforeunload", OnBeforeUnLoad); 
      } 
     } 
     */ 




      /* function(e){ 
      if(temp==true){ 
        alert("You are going to close"); 
       // return null; 


      } 
    }; */    

    function keyDownPress(e) 
    { 
      var evt = e || window.event; 
      var keyPressed = evt.which || evt.keyCode; 

      if (keyPressed==116) { 
        temp=false; 
        return false; 
      } 

      if(evt.button==2) { 
        alert("For security reasons, Right click has been disabled!"); 
        return false; 
      } 
     } 

     function confirmExit(e){ 

     // alert("ok ok "); 
      if(temp==true){ 
        alert("You are going to close"); 



      } 
    } 

這是代碼在IE 8,Mozilla的FF做工精細8 不工作的谷歌Chorme和FF 9