如何在close()和重定向之前延迟?

时间:2013-01-24 21:11:19

标签: javascript fancybox

  

可能重复:
  Is there a sleep function in JavaScript?

如何为此添加延迟以使其关闭并在这么多秒后重定向?

<script type="text/javascript">
  $(function() { parent.$.fancybox.close(); });
  window.parent.location.href = '/shop/basket';
</script>

3 个答案:

答案 0 :(得分:3)

window.closeAndRedirect = function() {
    parent.$.fancybox.close();
    window.parent.location.href = '/shop/basket';
}

setTimeout(closeAndRedirect, 5000); // 5 seconds

@jAndy指出:如果你正在重定向,为什么还要关闭某些东西?这是一个有效点。

也许你的意思是关闭,然后在关闭后5秒重定向?如果是这样的话:

parent.$.fancybox.close(function() {
    setTimeout(function() {
       window.parent.location.href = '/shop/basket';
    });
});

假设close有一个回调。如果没有,也许:

parent.$.fancybox.close();
setTimeout(function() {
    window.parent.location.href = '/shop/basket';
});

答案 1 :(得分:1)

使用setTimeout并从回调中调用您的函数。

类似的东西:

$(function() { 
    setTimeout(function() {
        parent.$.fancybox.close(); 
        window.parent.location.href = '/shop/basket';
    }, 5000);
});

等待5秒,从DOM准备就绪开始。

答案 2 :(得分:0)

实际上,您不需要在已打开的(子)页面内直接在父级页面上执行此操作....只需在回调中使用setTimeout即可自定义fancybox脚本,用于编写关闭重定向任务,例如:

$(".fancybox").fancybox({
    afterLoad: function () {
        setTimeout(function () {
            $.fancybox.close();
            window.location.href = "/shop/basket";
        }, 5000); // 5000 = 5 secs
    }
});

参见 JSFIDDLE