如何在x秒后自动关闭fancybox / lightbox / ...弹出窗口?

时间:2012-02-25 12:07:40

标签: javascript jquery popup fancybox lightbox

我有一个测试网站(index.html)打开一个弹出窗口(popup.html)并在三秒后关闭它。这是index.html的负责人:

<script language="javascript" type="text/javascript">
function popup(url) {
    newwindow=window.open(url,'name','height=70,width=300');
    if (window.focus) {newwindow.focus()}
    return false;
}
</script>

这是index.html的主体:

<a href="#" onClick="return popup('popup.html')">Open in pop-up</a>

这是popup.html的负责人:

<script>
    var howLong = 3000;
    t = null;
    function closeMe(){
        t = setTimeout("self.close()",howLong);
    }
</script>

这是popup.html的主体:

<body onLoad="closeMe();self.focus()">
<p>Closing in 3 seconds</p>
</body>

我想使用linghtbox / fancybox /无论什么来显示弹出窗口...并在3秒后再次关闭它。我该怎么做?我尝试了各种各样的东西,没有任何效果。实现这个最简单的方法是什么?

提前致谢!

3 个答案:

答案 0 :(得分:7)

您可以使用Fancybox(version 1.3.xversion 2.x)打开外部html文档,并在几秒钟后关闭它。

对于fancybox v1.3.x ,您的HTML应如下所示:

<a href="page.html" class="fancybox">open fancybox and close it automatically after 3 seconds</a>

和脚本:

$(document).ready(function() {
 $(".fancybox").fancybox({
  'width': 640, // or whatever
  'height': 320,
  'type': 'iframe',
  'onComplete': function(){
    setTimeout( function() {$.fancybox.close(); },3000); // 3000 = 3 secs
  }
 });
}); // ready

对于fancybox v2.x ,html(注意class):

<a href="page.html" class="fancybox fancybox.iframe">open fancybox and close it automatically after 3 seconds</a>

和脚本:

$(document).ready(function() {
 $(".fancybox").fancybox({
  width: 640, // or whatever
  height: 320,
  afterLoad: function(){
   setTimeout( function() {$.fancybox.close(); },3000); // 3000 = 3 secs
  }
 });
}); // ready

答案 1 :(得分:1)

onComplete或afterLoad对我不起作用,所以我在父页面上添加了以下代码

window.closeFancyBox = function () {
        $.fancybox.close();
};

从弹出页面我调用代码

$(window).load(function(){ setTimeout( function() {window.parent.closeFancyBox(); },3000); // 3000 = 3 secs });

答案 2 :(得分:0)

创建一个函数来关闭所有fancybox后加载并为该函数设置超时。

public function DeleteCode() {
        $codeID = $this->owner->request->param("ID");
        if($codeID && $code = PromoCode::get()->byID($codeID)) {
            $code->delete();
        }

        return $this->owner->redirectBack();
    }