jqModal jQuery插件 - 如何在模态弹出窗口上设置超时?

时间:2010-07-27 02:14:36

标签: javascript jquery jquery-plugins jqmodal modalpopups

我正在使用jQuery插件jqModal

新手,所以我还在学习它的用法。

我要做的是显示弹出窗口说3秒,然后自动关闭。

基本上,这是我想要的事件流程:

  1. 我的页面已加载。
  2. 显示模式弹出窗口“连接到MySite ..”
  3. (3秒后)模态弹出窗口自动关闭。
  4. 刷新页面(window.location.reload());
  5. 这是我到目前为止所做的事情(并不多):

    HTML:

    <div id="jqPopupModal" style="display: none;">Connecting to My Site...</div>
    

    JS:

    window.onload = function() {
       showPopup();
       window.location.reload();
    }
    
    function showPopup() {
       $('#jqPopupModal').jqm( { modal: true } );
       $('#jqPopupModal').jqmShow();
    }
    

    是否有一些参数我可以传递给.jqmShow()函数来设置窗口的超时?或者我应该挂钩onShow回调并做一个简单的setTimeout?

    如果步骤2和4异步发生也会很好:换句话说,页面刷新时会显示jQuery弹出窗口。

    有什么想法吗?

    修改

    好的,所以我的开启/关闭延迟有效,但不是window.location.reload()。这样做会导致根本不会发生延迟。

    这是我的代码:

    function fbcPopupOnShow() {{
                    $('#fbcModalPopup').show();
                    window.location.reload();
                    window.setTimeout(new function() {{
                        $('#fbcModalPopup').jqmHide();
    
                    }}, 1000);
                }}
    
                function showFacebookConnectPopup() {{
                    $('#fbcModalPopup').jqm( {{ 
                        modal: true,
                        onShow: fbcPopupOnShow
                    }});
    
                    $('#fbcModalPopup').jqmShow();
                }}
    

    我希望window.location.reload()重新加载父窗口WHILST显示弹出窗口,而不是一个或另一个。

    编辑2:

    想通过异步执行重新加载和弹出,因为jqModal弹出窗口实际上不是“弹出窗口”(即不会生成新窗口)。它只是一个隐藏的DIV。

    因此,我刚刚更改了我的代码,以便在隐藏窗口后重新加载。

1 个答案:

答案 0 :(得分:2)

使用onShow事件在延迟后关闭它(需要jQuery 1.4+),否则你可以使用javascript超时来关闭弹出窗口。

var autoClose = function(hash) { $('#jqPopupModal').delay(3000).jqmHide(); }; 
$('#jqPopupModal').jqm({ modal: true, onShow:autoClose});