JavaScript超时脚本

时间:2009-08-10 04:59:31

标签: javascript

我需要一个脚本,我可以放在应用程序的任何页面上,它将运行X时间。当它达到js中指定的时间量时,它将打开页面上的叠加层或子弹出窗口。在任一窗口中,我都会给你文字应该说的内容。

在新窗口中,他们将有两个按钮。

履历 注销

如果他们点击恢复,您将终止覆盖或弹出窗口并刷新父页面。如果他们点击退出,您将重定向到网址。

所有这些都应该在js中配置。叠加窗口很简单,所以我不需要像jquery那样复杂的东西。只是一些漂亮干净的OOP js手工制作会很好。

3 个答案:

答案 0 :(得分: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 :(得分: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>

答案 2 :(得分:-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
  }
}