浏览器(浏览器名称)阻止此网站(Facebook)打开弹出式窗口
问题描述:
我想从服务器端获取响应后在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页面后不得到这个错误?在现代浏览器的默认设置
答
弹出广告拦截只让弹出窗口办理,如果他们在用户交互直接打开(最常见的点击。)
但是一个异步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;
}
}
});
}
为什么你需要打开窗口? – madalinivascu
我想打开Facebook的URL分享facebook上的帖子 –