我如何阻止我的Facebook共享窗口被弹出式拦截器阻止

How do I stop my Facebook share window from being blocked by popup-blocker?

本文关键字:弹出式 窗口 何阻止 我的 Facebook 共享      更新时间:2023-09-26

当调用Facebook共享按钮的onClick函数时,我的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函数中唯一的东西。