2017-06-02 33 views
1

我有2頁,主頁和編輯頁面。即使在更改頁面後,setTimeout是否繼續?

我使用了一個功能,它會在一定時間的不活動之後自動註銷用戶。

該功能僅用於主頁而不是編輯頁面。

以下是功能碼。

// Set timeout variables. 
    var timoutWarning = 10000; 
    var timoutNow = 30000; 


    var warningTimer; 
    var timeoutTimer; 

    // Start timers. 
    function StartTimers() { 
     console.log("Start TImer"); 
     warningTimer = setTimeout("IdleWarning()", timoutWarning); 
     timeoutTimer = setTimeout("SignOut()", timoutNow); 
     $("#timeout").dialog({ 
     autoOpen: false 
    }); 
    } 

    // Reset timers. 
    function ResetTimers() { 
     clearTimeout(warningTimer); 
     clearTimeout(timeoutTimer); 
     StartTimers(); 
     $("#timeout").dialog("close") 
     console.log("Reset TImer"); 
} 


    // Show idle timeout warning dialog. 
    function IdleWarning() { 

     $("#timeout").dialog({ 
      autoOpen: true, 
      modal: true 

     }); 

    } 

我叫了在主頁頁面中的功能通過使用

<body onload="StartTimers();" onmousemove="ResetTimers();"> 

<div id="timeout"> 
    <h1> 
     Session About To Timeout</h1> 
    <p> 
     You will be automatically logged out in a while<br /> 
    To remain logged in move your mouse 
</div> 

定時器工作在首頁頁面完全正常,但之後,我切換到編輯頁面(無功能基本上是一個空白頁),我仍然可以在不移動鼠標的情況下自動註銷。

這是否意味着即使切換頁面後,該功能仍在運行?如果是這樣,在我切換頁面後,有什麼可以做的以停止計時器?

ps我嘗試過在函數中添加並在編輯頁面中調用它,但是,即使在繼續移動我的鼠標之後,我仍然會註銷,這就是爲什麼我假設該函數在切換後仍然運行頁。

已解決:現在工作正常後,我重新啓動我的瀏覽器。我相信我可能在某個地方搞砸了。我向那些把時間花在這個問題上的人道歉。根據下面的評論/回答,我的問題的答案是NO。 setTimeout在更改頁面後不會繼續。

+0

當頁面關閉時,所有東西都會隨着頁面而死,包括超時。當您從主頁切換到編輯時會發生什麼?刷新是否發生,還是更像是單頁面應用程序?您是否100%肯定您沒有在編輯頁面上設置超時? –

+0

基本上它的.../home.html,當我點擊某些東西時,它會帶我到.../edit.html(我不確定刷新是否會發生)。我將函數存儲在timer.js中,所以我相信如果我在編輯頁面中設置了超時時間,我會在編輯頁面中添加,因爲我沒有 – user7793635

+0

那麼究竟該如何從/home.html過渡到/edit.html會發生嗎?你可以分享一些代碼嗎? –

回答

1

如果瀏覽器已完全加載第二頁,並且該代碼不在其上,那麼該代碼將不會運行。這是假設你正在加載第二頁'傳統',而不是通過AJAX拉入。

我會做以下事情:

  • 把一個alert("Code running")在setTimeout函數。這是一種告訴你代碼是否正在運行的非常簡單的方法。

  • 檢查編輯頁面的源代碼。確保你沒有將代碼複製到該頁面。

0

不,超時會在您關閉/刷新頁面時被刪除(就像JavaScript中的任何內容一樣)。所以你的bug一定是別的。

相關問題