目前,我在x秒后将用户重定向到另一个页面,但我想要做的是,在y秒后重定向用户,并且只有在用户点击我页面上的链接后才会启动计时器,目前计时器仅启动用户访问我的页面后。
以下是我发现谷歌搜索的代码 -
<head>
<script>
function js_wait()
{
setTimeout (js_go(), 3000); // 3000 ms = 3 secs
}
function js_go()
{
window.location = "mynexpage.php";
}
</script>
</head>
<body>
<a href="" onclick="js_wait(); return false;">My link</a>
</body>
我可以让它重定向onclick但是它在点击链接后立即重定向,但我希望它在重定向之前等待y秒。
答案 0 :(得分:6)
不要激活方法,只需传递函数签名,如下所示:
<head>
<script>
function js_wait()
{
setTimeout (js_go, 3000); // 3000 ms = 3 secs
}
function js_go()
{
window.location = "mynexpage.php";
}
</script>
</head>
<body>
<a href="" onclick="js_wait(); return false;">My link</a>
</body>
答案 1 :(得分:5)
从setTimeout函数参数中删除()
。
setTimeout (js_go, 3000); // 3000 ms = 3 secs
如果你有,那就意味着你传递函数调用的结果而不是函数引用。
作为背景信息,setTimeout可以以两种不同的方式使用:要么传递函数引用,就像你所做的那样,要么传递一个字符串,它将在setTimeout触发时计算。这意味着如果要将一些参数传递给setTimeout,您可以将它们作为字符串传递(如setTimeout('js_go("http://google.fi")', 3000)
)或将它们包装到函数中,这是首选方式(setTimeout(function() {js_go("http://google.fi")}, 3000)
)。
但是,由于你不在这里使用参数,你应该只传递函数引用,如上面的代码块所示。
答案 2 :(得分:3)
请更加简单地试试这个:工作演示 http://jsfiddle.net/FE4cT/
对于重定向,这是关键:window.parent.location
休息我希望它能满足您的需求:)
<强>码强>
function js_wait() {
setTimeout(function() {
window.parent.location = "http://www.google.com";
}, 3000);
}
示例
window.setTimeout(function() {
window.location.href = 'http://www.google.com';
}, 3000);
即。在你的具体情况:
window.setTimeout(function() {
window.location = 'mynexpage.php';
}, 3000);
答案 3 :(得分:2)
只需写作:
function js_wait_redirect() {
setTimeout(
function(){
window.location = "mynexpage.php";
}
, 3000); // 3000 ms = 3 secs
}