Javascript 重定向页面延迟或继续

Javascript 重定向页面延迟或继续,javascript,php,jquery,Javascript,Php,Jquery,我有一个链接到其他网站的页面。当用户单击某个链接时,它会通过redirect.php将其重定向到所需的站点 我想得到的是: 在重定向页面中,我将: <meta http-equiv="refresh" content="3;URL=<?php echo $post_url ?>" /> 而不是使用Javascript重定向,使用jQuery时,它可能如下所示: $(function(){ window.redirectTimeout = setTimeout(f

我有一个链接到其他网站的页面。当用户单击某个链接时,它会通过redirect.php将其重定向到所需的站点

我想得到的是: 在重定向页面中,我将:

<meta http-equiv="refresh" content="3;URL=<?php echo $post_url ?>" />
而不是
使用Javascript重定向,使用jQuery时,它可能如下所示:

$(function(){
    window.redirectTimeout = setTimeout(function(){  // set a redirect timeout of 3 seconds
        window.location.href = '<?php echo $post_url ?>';
    }, 3000);

    $('#cancelBtn').on('click', function(){  // assuming #cancelBtn is used to cancel redirection 
        clearTimeout(window.redirectTimeout);
    });
});
$(函数(){
window.redirectTimeout=setTimeout(函数(){//将重定向超时设置为3秒
window.location.href='';
}, 3000);
$('#cancelBtn')。在('click',function(){//假设#cancelBtn用于取消重定向
clearTimeout(窗口重定向超时);
});
});
要直接转到其他站点,只需在页面中使用一个简单的链接:

<a href="<?php echo $post_url ?>">Go there now!</a>

首先摆脱元刷新-它是不可取消的

然后

HTML

<a id="go" href="http://.....">Go</a>
<a id="hold">Hold</a>
在这种情况下,最好对窗口的onload事件做出响应,因为这样用户在重定向触发之前有更好的机会阅读内容。文档的就绪事件在所有内容加载之前提前触发


另外,使用此解决方案,重定向url只定义一次,而不是两次。

好的,这对于希望立即或在阅读内容后查看内容的用户来说是很好的,但是如果用户希望留下来,我如何所谓的冻结元刷新计数器?抱歉,我的评论为时过早。我尽快删除了它。@ofermc Ein beaya:)。考虑使用<代码> .Load()/<代码>而不是<代码> > Read()/<代码> ROAME-1888建议。嘿,Yotam,再回来……我希望这一页被跳过后按。我已替换window.location.href='';带窗。位置。替换(“”);但当用户从重定向到的页面按回浏览器时,页面仍会加载。有什么想法吗?谢谢@ofermc,很抱歉这个月没来。你把这个问题解决了吗?你说跳过是什么意思?我担心,如果您想“双倍返回”,这在任何传统方式下都是不可能的,您可以尝试使用php的$u会话存储上一页,然后在第二次加载时重定向到上一页。嘿,Yotam,谢谢您的关心。在Roamer-1888的帮助下,我终于在下面公认的答案中找到了正确的答案。谢谢你,谢谢。我接受你说的话,并会用它。但是“$”(“#go”)。单击()这意味着计数器只有在单击“#go”时才会启动,我希望它在文档完成上传后立即启动,因此此部分可能适用于其他情况,但不适用于我的情况。非常感谢。不,你误读了代码<代码>$(“#go”)。单击()触发对Go链接的人工点击。这样,重定向url只需定义一次,即Go链接的href。
$(window).load(function() {
    //javascript equivalent of meta refresh
    var t = setTimeout(function() {
        $("#go").click();
    }, 3000);

    //cancel the timeout if hold button is clicked
    $("#hold").on('click', function() {
        clearTimeout(t);
    });
});