【问题标题】:How to load facebook sdk asynchronous如何异步加载facebook sdk
【发布时间】:2016-02-09 12:17:18
【问题描述】:

我正在使用以下代码在 facebook 中分享。

<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
  FB.init({
  appId                : "1549906631990069",
  status               : true, 
  cookie               : true, 
  xfbml                : true, 

  oauth: true,
  frictionlessRequests : true
});
};

(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;

js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

</script>

在那之后,我有一张图片,点击该图片,Facebook 分享弹出窗口即将到来。

<script type="text/javascript">
function shareOnFacebook() {
    var $temp = $(".wpProQuiz_points").find("span");
                    var scored = $temp.eq(2).text();

  FB.ui(
  {
    method        : 'feed',
    display       : 'iframe',
    name          : 'I have Scored '+ scored + ' in edumongoose quiz.',
    link          : 'https://quiz.dev.edumongoose.com'
  },
  function(response) {
    if (response && response.post_id) {
      alert('OK! User has published on Facebook.');

    } else {
      alert('Post was not published.');
    }
  }
);

}

在 chrome 和 firefox 普通窗口中工作良好,但是当我进入私人窗口时,它显示错误: “https://connect.facebook.net/en_US/all.js”的资源已被阻止,因为启用了跟踪保护。

我做错了什么?

【问题讨论】:

    标签: javascript php wordpress facebook


    【解决方案1】:

    这不是你的错!浏览器正在对照已知将跟踪信息发送回服务器的脚本列表检查所有下载的脚本文件。在隐身模式或隐私模式下,浏览器往往会出于隐私原因阻止这些脚本。

    已在https://bugzilla.mozilla.org/show_bug.cgi?id=1226498 提出针对 Firefox 的错误报告

    【讨论】:

    • 我怎样才能禁用这个,意味着通过javascript?
    • @JohnD.Doucette 你为什么要这样做?人们经常使用隐身模式来防止 Facebook 等服务跟踪他们的活动。一个更优雅的解决方案是在隐身模式下尽可能少地禁用功能,但向用户显示一个建议,如果他们想要体验您的完整网站,他们应该停止私下浏览。
    • 这是故意的,应该没有办法阻止这种情况的发生。否则,私有模式的整个概念将毫无意义。
    • @Chris J 为什么要编辑?该错误报告似乎无关紧要,因为我的回答将此描述为故意行为。
    【解决方案2】:

    我成功的唯一方法是使用

        <script src=\"/js/jquery.min.js\" async></script>
    

    然后:

        <script>
         $(document).ready(function () {
         var options = {
         type: "delay",   
         time:1000, //1 sec
         scripts: [
                        "http://connect.facebook.net/en_US/all.js#xfbml=1&appI$
                        "http://assets.pinterest.com/js/pinit.js"
                                ],
         success: function () {
             FB.init({ status: true, cookie: true, xfbml: true });
         }
        };
        $.lazyscript(options);
    
       });
       </script>
    

    你可以在谷歌上搜索lazyscript并下载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多