用于FB.Canvas.setAutoResize()的IE抛出错误;

时间:2011-09-08 22:16:09

标签: internet-explorer iframe facebook-javascript-sdk

这是一件新事物。至少IE 8在all.js中得到一个不支持的方法,似乎在FB.Canvas.setAutoResize();

这是停止我们的自动调整大小在IE中工作,我似乎无法得到一个有效的解决方法而不会抛出某种异常。

window.fbAsyncInit = function() {
  FB.init({
    appId  : js_fb_app_id,
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true,  // parse XFBML
    oauth   : true          
  });

  FB.Canvas.setAutoResize();
};

2 个答案:

答案 0 :(得分:1)

使用 window.fbAsyncInit 挂钩执行 FB.Canvas.setAutoResize();

window.fbAsyncInit 功能将在加载Facebook库时执行,但不会在加载整个页面时执行。

当页面未完全加载时, FB.Canvas.setAutoResize(); 将无法正常工作,因为无法知道您内容的正确高度。如果页面满载,您可以使用window.onload执行 FB.Canvas.setAutoResize();

试试这个:

window.fbAsyncInit = function() {
    FB.init({
        appId  : js_fb_app_id,
        status : true, // check login status
        cookie : true, // enable cookies to allow the server to access the session
        xfbml  : true,  // parse XFBML
        oauth   : true          
    });
};
window.onload=function(){
    FB.Canvas.setAutoResize();
}

答案 1 :(得分:0)

请记住将您的javascript文件加载为异步,这意味着它只会在完成加载整个文件后执行,这可能是您的情况,import语句应如下所示:

<script>
  window.fbAsyncInit = function() {
    FB.init({appId: 'your app id', status: true, cookie: true,
             xfbml: true});
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>

希望这对你有所帮助! :)