1

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

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

我的代码:

$('.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();
    }
});
4

1 回答 1

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();
    }
});

假设弹出窗口与启动它的窗口位于同一域中,您可能可以将希望ThisIsNotInGlobalScope 变量替换为附加到窗口的全局变量。然后,您可以在弹出窗口启动时设置该变量并使用浏览器卸载事件更改它

于 2012-05-10T17:54:34.677 回答