在jquery响应之后打开javascript弹出窗口

时间:2014-05-27 12:35:51

标签: javascript jquery function variables

我有这个简单的javascript函数:

<script type="text/javascript"> 
$(document).ready(function () {
     $(document).on('click', '.check', function(){
               $.post('/index.php',
               {
                   article: '1'
               },

               function(data, textStatus)
               {
                window.open('https://google.com');
               });
     });
});
</script> 

<button class=".check">Check</buttton>

虽然点击是用户启动的,但浏览器会阻止弹出窗口。怎么避免这个?

3 个答案:

答案 0 :(得分:2)

没有办法通过代码取消阻止它。

大多数浏览器认为弹出窗口非常中断,这就是他们阻止弹出窗口的原因。

您只能查看弹出窗口是否被阻止,并立即通知用户取消阻止。

var wind =  window.open('https://google.com');
if(!wind || wind.closed || typeof wind.closed=='undefined') 
{ 
     //POPUP BLOCKED
alert("please enable popups");
}

答案 1 :(得分:0)

您的弹出窗口应由用户互动直接触发。但它取而代之的是AJAX回调。

因此,为防止阻止,您应该在click处理程序中打开弹出窗口。然后发帖..

编辑:一个棘手的方法是直接打开弹出窗口,然后发出请求,最后将弹出窗口重定向到结果网址:

$(document).on('click', '.check', function(){
    var popup = window.open('/loading.html', 'popup');
    $.post('/index.php', { article: '1' },
        function (data, textStatus) {
            popup.location.href = 'http://new-url';
        });
 });

答案 2 :(得分:0)

你可以尝试这个技巧:

function(data, textStatus)
{
    var anchor = $( '<a/>', {href:'https://google.com',target:'_blank'} ).text( 'TEST' );
    $('body').append( anchor );
    $('body').find( 'a' ).last()[0].click();
    anchor.remove();
};

JS FIDDLE DEMO