Javascript 重定向页面延迟或继续
我有一个链接到其他网站的页面。当用户单击某个链接时,它会通过redirect.php将其重定向到所需的站点 我想得到的是: 在重定向页面中,我将: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
<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);
});
});