2017-04-12 73 views
0

我想从服务器端获取响应后在Facebook上发布一些数据。浏览器(浏览器名称)阻止此网站(Facebook)打开弹出式窗口

例子:

function share_to_facebook(url){ 

    $.ajax({ 
    type: "POST", 
    url: "/create_data", 
    data: data, 
    success: function(result) { 
     if(result.success=="success"){ 
     // url contains the facebook url with some required parameters. 
     window.open(url, '_blank'); 
    } 
    } 
    }); 
} 

执行这种方法,获得以下MESSAGE- “浏览器(浏览器名)打开一个弹出窗口阻止这个网站”

如何打开Facebook页面后不得到这个错误?在现代浏览器的默认设置

+0

为什么你需要打开窗口? – madalinivascu

+0

我想打开Facebook的URL分享facebook上的帖子 –

回答

0

弹出广告拦截只让弹出窗口办理,如果他们在用户交互直接打开(最常见的点击。)

但是一个异步AJAX调用回调函数内,即“直接”连接丢失。浏览器再也看不到与之前用户交互的连接,因此认为它是用户没有要求的“自动”弹出窗口,因此被阻止。

你可以试着在你的AJAX请求之前打开弹出窗口,将一个空白页面/ about:blank作为URL(假设share_to_facebook在用户交互中被直接调用),然后在你的回调中你只需要为弹出框分配一个新的URL窗口。

function share_to_facebook(url){ 
    var myPopup = window.open('about:blank', '_blank'); 

    $.ajax({ 
    // ... 
    success: function(result) { 
     if(result.success=="success"){ 
     // url contains the facebook url with some required parameters. 
     myPopup.location.href = url; 
    } 
    } 
    }); 
} 
+0

非常感谢您的回复! 但是,如果AJAX响应成功,我们需要打开窗口。 –

+0

不可能直接。但是,如果它不是成功的,你可以再次关闭弹出窗口。 – CBroe

+0

感谢您的回复 –