HY,
我有10秒。延迟页面。
var t = window.setTimeout('redirect(strUrl)', 11000);
函数重定向(strUrl)只执行document.location
如果我的页面底部显示一条消息,那会有什么好处,例如:在10秒内重定向...
“一秒钟之后,setTimeout被解雇了”
...在9秒内重定向到命运..
等
PS。最后的点从左到右你就知道了。 .. ...
我的myselft可能会发现如何获得超时的每一秒,只是用jquery改变了数字......如果那可能的话。
答案 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);
如果您想要第二件事,请用......替换上面的相应行
msg.html('Redirecting in ' + timeout + ' second' + ((timeout != 1) ? 's' : ''));
当然,这适用于英语,但可能不像其他语言那么容易。
答案 1 :(得分:2)
您可以通过创建div
绝对位置bottom
和left
坐标来完成此操作,并通过循环每秒更新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;
}
}
}
请注意,这将是不精确,因为超时不一定会在一秒内触发。但它会很接近。
答案 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)