如何修复加载Facebook javascript sdk时出现的错误?

如何修复加载Facebook javascript sdk时出现的错误?,javascript,facebook,facebook-javascript-sdk,Javascript,Facebook,Facebook Javascript Sdk,我正在使用以下代码将Facebook javascript sdk加载到我的页面中:- (function() { console.log('Hello World! From self executing function.'); var e = document.createElement('script'); e.async = true; e.type = 'text/

我正在使用以下代码将Facebook javascript sdk加载到我的页面中:-

           (function() {
            console.log('Hello World! From self executing function.'); 
            var e = document.createElement('script');
            e.async = true;
            e.type = 'text/javascript';
            e.src = document.location.protocol +  '//connect.facebook.net/en_US/all.js';
            document.getElementById('fb-root').appendChild(e);
            console.log('javascript sdk is appended into the fb-root element of the page.');
        }());
它正在正确加载,但我的控制台中出现以下错误:-

  Error: Permission denied to access property 'toString'
  [Break On This Error]     

   ...5(i(ca.getElementsByTagName('*')),'forEach',true,function(ka){if(!ea&&ka.getAttr...
如何解决这个问题


感谢您的帮助?

Facebook javascript SDK通常会导致跨浏览器问题。为了解决这个问题,facebook本身集成了一种方法,即在FB.init()函数中添加一个频道url

window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
  appId      : 'YOUR_APP_ID', // App ID from the App Dashboard
  channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File for x-domain communication
  status     : true, // check the login status upon init?
  cookie     : true, // set sessions cookies to allow your server to access the session?
  xfbml      : true  // parse XFBML tags on this page?
});

// Additional initialization code such as adding Event Listeners goes here

 };
添加通道文件可以解决跨浏览器问题

channel.html文件的内容应仅为一行:

<script src="//connect.facebook.net/en_US/all.js"></script>

FB.init()中的channelUrl参数是可选的,但强烈建议使用。提供通道文件有助于解决三个特定的已知问题

  • 包含跨帧通信的代码的页面可能会导致社交冲突 插件显示为空白,没有channelUrl
  • 如果未提供频道URL,且页面包含自动播放音频 或者视频,用户可能会听到两个音频流,因为该页面具有 已在后台为跨域第二次加载 沟通
  • 频道文件将阻止在您的频道中包含额外的点击 服务器端日志。如果未指定channelUrl,则应 删除包含fb_xd_半身像或fb_xd_片段参数的页面视图 以确保正确计数
channelUrl必须是与包含SDK的页面匹配的完全限定URL。换句话说,如果您的站点使用www服务,则频道文件域必须包含www,如果您在页面上修改document.domain,则还必须在channel.html文件中进行相同的document.domain更改


Facebook javascript SDK通常会导致跨浏览器问题。为了解决这个问题,facebook本身集成了一种方法,即在FB.init()函数中添加一个频道url

window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
  appId      : 'YOUR_APP_ID', // App ID from the App Dashboard
  channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File for x-domain communication
  status     : true, // check the login status upon init?
  cookie     : true, // set sessions cookies to allow your server to access the session?
  xfbml      : true  // parse XFBML tags on this page?
});

// Additional initialization code such as adding Event Listeners goes here

 };
添加通道文件可以解决跨浏览器问题

channel.html文件的内容应仅为一行:

<script src="//connect.facebook.net/en_US/all.js"></script>

FB.init()中的channelUrl参数是可选的,但强烈建议使用。提供通道文件有助于解决三个特定的已知问题

  • 包含跨帧通信的代码的页面可能会导致社交冲突 插件显示为空白,没有channelUrl
  • 如果未提供频道URL,且页面包含自动播放音频 或者视频,用户可能会听到两个音频流,因为该页面具有 已在后台为跨域第二次加载 沟通
  • 频道文件将阻止在您的频道中包含额外的点击 服务器端日志。如果未指定channelUrl,则应 删除包含fb_xd_半身像或fb_xd_片段参数的页面视图 以确保正确计数
channelUrl必须是与包含SDK的页面匹配的完全限定URL。换句话说,如果您的站点使用www服务,则频道文件域必须包含www,如果您在页面上修改document.domain,则还必须在channel.html文件中进行相同的document.domain更改


哪个浏览器会出现此错误?在chrome下添加此脚本时,似乎没有错误。我现在正在使用FireFox。好的,我也会登记的@Adidi我使用的javascript代码来自于的教程。@Adidi我在chrome中也没有发现任何错误。所以这只是一个特定于浏览器的问题。我在Firefox中也没有发现任何错误。你需要检查的主要事情是facebook脚本确实已加载,你可以继续使用它并调用API。如何检查,但它正在加载,因为我可以登录用户并获取其facebook名称和facebook个人资料照片。你会在哪个浏览器中收到此错误?在chrome下添加此脚本时,似乎没有错误。我现在正在使用FireFox。好的,我也会登记的@Adidi我使用的javascript代码来自于的教程。@Adidi我在chrome中也没有发现任何错误。所以这只是一个特定于浏览器的问题。我在Firefox中也没有发现任何错误。你需要检查的主要事情是facebook脚本确实已加载,你可以继续使用它并调用API。如何检查,但它正在加载,因为我可以登录用户并获取他的facebook姓名和facebook个人资料照片。