1

ハイパーリンクのクリックイベントでポップアップを開きます...ポップアップにはサーバーからのレコードが含まれています。

問題は、すばやくクリックすると、一度に複数のポップアップが表示されることです。これを防ぐ方法はありますか?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つのアプローチです。最善の解決策ではありませんが、機能するはずです。このコードが行うことは、リンクを何度もクリックしないように保護し、クリックするたびに新しいインスタンスを開くようにすることです。このコードでは、ウィンドウを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 に答える