我正在使用jQuery插件jqModal。
新手,所以我还在学习它的用法。
我要做的是显示弹出窗口说3秒,然后自动关闭。
基本上,这是我想要的事件流程:
这是我到目前为止所做的事情(并不多):
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。
因此,我刚刚更改了我的代码,以便在隐藏窗口后重新加载。
答案 0 :(得分:2)
使用onShow事件在延迟后关闭它(需要jQuery 1.4+),否则你可以使用javascript超时来关闭弹出窗口。
var autoClose = function(hash) { $('#jqPopupModal').delay(3000).jqmHide(); };
$('#jqPopupModal').jqm({ modal: true, onShow:autoClose});