2009-08-10 83 views
0

我需要一個腳本,我可以把它放在應用程序的任何頁面上,它將運行X時間量。當它達到js中指定的時間量時,它將打開頁面上的疊加層或子彈出窗口。在任何一個窗口內,我都會給你文字應該說的。JavaScript超時腳本

在新窗口中他們將有兩個按鈕。

簡歷 註銷

如果他們點擊你恢復會殺死重疊或彈出窗口並刷新父頁面。如果他們點擊註銷,你將重定向到一個網址。

所有這些都應該在js中配置。覆蓋窗口將很簡單,所以我不需要任何複雜的東西像jquery。只是一些很好的乾淨的OOP js手工製作會很好。

回答

2

另一種方法:

用法:

var timer = reloadTimer({ seconds:5, logoutURL: '/logout', 
          message:'Do you want to stay logged in?'}); 
    timer.start(); 

實現:

var reloadTimer = function (options) { 
    var seconds = options.seconds || 0, 
     logoutURL = options.logoutURL, 
     message = options.message; 

    this.start = function() { 
    setTimeout(function(){ 
     if (confirm(message)) { 
     window.location.reload(true); 
     } else { 
     window.location.href = logoutURL; 
     } 
    }, seconds * 1000); 
    } 
    return this; 
}; 
-1
<body onload="timerStart()"> 

...

function timerStart(){ 
    setTimeout(confirmStay, 60000) // 1 minute 
} 

function confirmStay() { 
    if (confirm("Press OK to stay here.")) { 
    // user pressed OK 
    timerStart(); // restart timer 
    } else { 
    // user pressed Cancel 
    location.href="http://example.com"; //redirect to homepage 
    } 
} 
+2

'的setTimeout( 「confirmStay()」,60000)' 不該」那只是第一個參數的「confirmStay」? – alex 2009-08-10 05:28:21

+0

我認爲這兩個版本(字符串和函數引用)都受支持。 – finpingvin 2009-08-10 05:47:22

+0

我總是在那裏放一個包含js聲明的字符串......但是我沒有趕上所有新的時尚,所以它可能已經過時了。 – Zed 2009-08-10 05:59:55

0

我猜想,這已經是與清爽的會話保持登錄。如果是這種情況,那麼你應該記住,用戶在彈出一段時間後可能不會響應你的對話框。也就是說,彈出窗口可能會在10分鐘後出現,而您的會話可能會持續15分鐘,但如果用戶響應時間超過5分鐘,則會話將過期,頁面刷新不會對您有所幫助。

<body onload="setTimeout(refreshLogin, 600000)"> 
    <script> 
     function refreshLogin() { 
      if (confirm("Press OK to refresh this page and renew your login.")) { 
      window.location.reload(); // refresh the page 
      } else { 
      window.location.href="http://example.com" //redirect to somewhere 
      } 
     } 
    </script> 
</body>