jquery / jscript防止打开多个弹出窗口

时间:2012-05-10 17:22:15

标签: javascript jquery popup

我使用超链接的click事件打开一个弹出窗口...弹出窗口包含来自服务器的记录。

问题是,当我快速点击时,会同时出现多个弹出式窗口。 有办法防止这种情况吗?其中可以打开一个弹出窗口

我的代码:

$('.wrapper_form a.add').click(function(e)
{
    e.preventDefault();

    if(typeof(currentPopup) == 'undefined' || currentPopup.closed)
    {
        url = 'server_page.aspx';
        currentPopup = window.open(url,'server','height=500,width=800');
        if (window.focus) {currentPopup.focus()}
    }
    else
    {
        currentPopup.focus();
    }
});

1 个答案:

答案 0 :(得分:4)

这是一种方法。不是最好的解决方案,但它应该工作。此代码将执行的操作是防止多次单击链接并让它为每次单击打开一个新实例。此代码不允许窗口在1/2间隔内打开多次,当然您可以更改时间。

var hopefullyThisIsNotInGlobalScope = false;

$('.wrapper_form a.add').click(function(e)
{
if (hopefullyThisIsNotInGlobalScope)
{
 return false;
}
    hopefullyThisIsNotInGlobalScope = true; 
    setTimeout(function () { hopefullyThisIsNotInGlobalScope = false; }, 500);
    e.preventDefault();

    if(typeof(currentPopup) == 'undefined' || currentPopup.closed)
    {
        url = 'server_page.aspx';
        currentPopup = window.open(url,'server','height=500,width=800');
        if (window.focus) {currentPopup.focus()}
    }
    else
    {
        currentPopup.focus();
    }
});

假设弹出窗口与启动它的窗口位于同一个域中,您可以使用附加到窗口的全局var替换hopefullyThisIsNotInGlobalScope变量。然后,您可以在弹出窗口启动时设置该变量,并使用browser unload event

更改它