如何阻止我的Facebook共享窗口被弹出窗口阻止程序阻止?
问题描述:
我有我的Facebook共享窗口出现时,一个函数被称为onClick Facebook分享按钮。如何阻止我的Facebook共享窗口被弹出窗口阻止程序阻止?
问题是Facebook窗口试图出现,但被弹出窗口阻止程序阻止。
这是我第一次创建共享窗口。有没有简单的解决方案来绕过弹出窗口阻止程序?
这里是触发功能按钮:
<button class="share-now" onclick="fb_callout();">
这里是调用的函数:
<script>
function fb_callout() {
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
}
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId : '162280254223002', // App ID from the App Dashboard
xfbml : true,
version : 'v2.5',
status : true
});
// Additional initialization code such as adding Event Listeners goes here
FB.ui(
{
method: 'feed',
href: 'http://www.example.com',
name: 'Example',
link: 'http://www.example.com',
picture: 'http://image.png',
caption: 'Caption',
description: 'words go here'
},
function(response) {
if (response && response.post_id) {
alert('Post was published.');
} else {
alert('Post was not published.');
}
}
);
};
</script>
答
现在你试图打开一个弹出没有用户交互,但在一个异步回调函数中。当然,弹出式窗口拦截器检测并阻止弹出窗口(出于一个很好的理由)。你需要做两件事:
- 加载页面加载的JS SDK,而不是用户交互。
- 直接通过用户交互调用
FB.ui
。它应该是fb_callout
函数中唯一的东西。
谢谢你的回答! 我做了这些更改,但现在没有窗口出现onClick ... 任何想法,为什么可能是这种情况? –
您是否检查了浏览器控制台的错误或警告? – luschn
在控制台中显示: 未捕获ReferenceError:FB未定义 –