重定向10,... 9,...脚本

时间:2011-01-27 11:25:20

标签: javascript jquery redirect

HY,

我有10秒。延迟页面。

var t = window.setTimeout('redirect(strUrl)', 11000);

函数重定向(strUrl)只执行document.location

如果我的页面底部显示一条消息,那会有什么好处,例如:在10秒内重定向...

“一秒钟之后,setTimeout被解雇了”

...在9秒内重定向到命运..

PS。最后的点从左到右你就知道了。 .. ...

我的myselft可能会发现如何获得超时的每一秒,只是用jquery改变了数字......如果那可能的话。

5 个答案:

答案 0 :(得分:6)

var timeout = 11; // in seconds

var msgContainer = $('<div />').appendTo('body'),
    msg = $('<span />').appendTo(msgContainer),
    dots = $('<span />').appendTo(msgContainer); 

var timeoutInterval = setInterval(function() {

   timeout--;

   msg.html('Redirecting in ' + timeout + ' seconds');

   if (timeout == 0) {
      clearInterval(timeoutInterval);
      redirect(strUrl);
   } 

}, 1000);

setInterval(function() {

  if (dots.html().length == 3) {
      dots.html('');
  }

  dots.html(function(i, oldHtml) { return oldHtml += '.' });
}, 500);

See it on jsFiddle

如果您想要第二件事,请用......替换上面的相应行

msg.html('Redirecting in ' + timeout + ' second' + ((timeout != 1) ? 's' : ''));

当然,这适用于英语,但可能不像其他语言那么容易。

答案 1 :(得分:2)

您可以通过创建div绝对位置bottomleft坐标来完成此操作,并通过循环每秒更新div中的文本。像这样:

function redirect(strurl) {
  var seconds = 10;
  var div = $("<div/>").css({
    position: "absolute",
    left: "0px",
    bottom: "0px"
  }).appendTo(document.body);

  continueCountdown();

  function continueCountdown() {
    --seconds;
    if (seconds >= 0 ) {
      div.text("...Redirecting in " + seconds + " seconds...");
      setTimeout(continueCountdown, 1000);
    }
    else {
      // Redirect here
      document.location = strurl;
    }
  }
}

Live example

请注意,这将是不精确,因为超时不一定会在一秒内触发。但它会很接近。

答案 2 :(得分:2)

试试这个:

var count=10;

window.setTimeout(function(){redirect(url)}, 1000);

function redirect(url){
    if(--count==0){
        location.href=url;
        return;
    }
    $("#DIV_TO_DISPLAY_MESSAGE").text("redirecting in " + count+" secs.");
    window.setTimeout(function(){redirect(url)}, 1000);
}

答案 3 :(得分:1)

定义一个带有秒数的变量,并在setTimeout(...,1000)中调用函数,它将减少秒数,改变some-div / span ...的内容,如果secs = 0重定向。< / p>

答案 4 :(得分:1)

我会选择countdown-plugin。有一个example available