如何在单击事件上禁用Javascript重定向

时间:2012-02-24 06:55:05

标签: javascript html

我使用Javascript重定向在X秒后重定向访问者。但是,页面上还有一个链接,将访问者带到同一页面。如果访问者首先点击链接,我想停止重定向。

请注意,单击此链接时会在新窗口中打开,但javascript重定向会在同一窗口中打开。

这是我在HTML页面中使用的代码,

Javascript重定向代码:

<script>
<!-- 
timeout = '5000'; // milliseconds/1000th of a sec
window.onload = setTimeout(myRedirect, timeout); // ensure we load the whole page

function myRedirect() {

window.location = "http://www.mypage.com/page1.html";
}
//-->
</script>

此链接在新窗口中打开:

<a href="http://www.mypage.com/page2.php" target="_blank">Click Here</a>

关于如何实现这一目标的任何想法?

3 个答案:

答案 0 :(得分:3)

将超时调用存储在变量中。

var timeout = '5000';
var myTimeout;
window.onload = function(){
    myTimeout = setTimeout(myRedirect, timeout);
}

当你想取消它时,清除该变量中的超时:

clearTimeout(myTimeout)

答案 1 :(得分:0)

您只需在单击链接时清除超时:

<a href="somepage.html" onclick="javascript:clearTimeout(t);">click here</a>

请注意,对象't'必须是setTimeout函数返回的对象。所以现在看起来像:

var t;

window.onload = function() {
    t = setTimeout(myRedirect, timeout);
}

另外,我可能会在这里指出,你在这里做的是一般不推荐(这个例外肯定有规则)。最好使用HTTP标头进行重定向,但由于我不知道您的要求究竟是什么,所以我无法发表评论。

答案 2 :(得分:0)

您应该使用clearTimeout取消setTimeout,请参阅示例here