1

ボタンをクリックすると、ユーザーがログインしているかどうかをajaxでチェックし、ログインしている場合は、ページを離れずにいくつかのアクションを実行するスクリプトを書いています。ユーザーがログインしていない場合は、ログイン ウィンドウのポップアップを開きたいと思います。問題は、window.open() が「クリック」イベントの直下にないため、ポップアップ ブロッカーによってブロックされることです。クリック アクションのすぐ下に window.open を配置すると、正常に動作します。

これを回避する方法はありますか?

$('.myButton').click(function() {
        $.get(ajaxUrl, function(hastoken) {
            if(hastoken == 1) {
                // do stuff here                        
            } else {

                window.open("http://www.google.com");
                // login
            }
        }); 
    });
4

3 に答える 3

0

これはあなたを助けるかもしれません-これは一種のライトボックスを開きます...

 $('.myButton').click(function() {
            $.get(ajaxUrl, function(hastoken) {
                if(hastoken == 1) {
                    // do stuff here                        
                } else {

                    var dialogDiv=$("<div></div>");                               
            var $dialog = $(dialogDiv)
            .load("Your Url to login form")
            .dialog({
                autoOpen: false,
                title: "Message Box",
                width: 900,
                modal: true,
                buttons: {
                    "Close": function() {                    
                        $(this).dialog("close");
                    }
                }
            });
            $dialog.dialog("open");

            return false;
        }

                }
            }); 
        });
于 2013-03-24T11:54:52.140 に答える
0

ファンシーボックスの使用をお勧めします: ( http://fancybox.net/ )

$('.myButton').click(function() {
    $.get(ajaxUrl, function(hastoken) {
        if(hastoken == 1) {
            // do stuff here                        
        } else {

           $("#some_div").fancybox({
    'transitionIn'  :   'elastic',
    'transitionOut' :   'elastic',
    'speedIn'       :   600, 
    'speedOut'      :   200, 
    'overlayShow'   :   false
       });
        }
    }); 
});
于 2013-03-24T11:33:31.283 に答える
0

OK、これが私が思いついたものです。この回答に感謝します。基本的に、windw.open を適切なレベルに保ちながら、ajax 呼び出しを同期ラッパーでラップしました。

$('.myButton').click(function() {
    var hasToken = getResponse(url);
    if(hastoken == 1) {
        // do stuff here                        
    } else {
        window.open("http://www.google.com");
        // login
    }
});


function getResponse(strUrl) {
  var strReturn = "";

  jQuery.ajax({
    url: strUrl,
    success: function(html) {
      strReturn = html;
    },
    async:false
  });

  return strReturn;
}
于 2013-03-24T11:44:36.543 に答える