如何阻止我的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函数中唯一的东西。
+0

谢谢你的回答! 我做了这些更改,但现在没有窗口出现onClick ... 任何想法,为什么可能是这种情况? –

+0

您是否检查了浏览器控制台的错误或警告? – luschn

+0

在控制台中显示: 未捕获ReferenceError:FB未定义 –