2010-06-11 28 views
10

creamos una aplicación de Facebook con ruby ​​/ rails y facebooker (aplicación iframe) y actualmente estamos atascados con el FB.Canvas.setAutoResize que parece fallar en algunos casos. usando el ejemplo de los documentos de desarrollador de Facebook (vea http://developers.facebook.com/docs/reference/javascript/). el autoresize falla una vez que ingresa a una página que es más alta que 800px, por así decirlo, solo funciona mientras el lienzo se agrande, no cuando se hace más pequeño. Alguien tiene una pista o tal vez una solución?facebook javascript SDK: FB.Canvas.setAutoResize iFrame no funciona?

aquí es la pieza de código de redimensionamiento

<div id="fb-root" style="width:1px;height:1px;position:absolute;"></div> 
<script type="text/javascript"> 
    window.fbAsyncInit = function() { 
    FB.init({appId: '126342024064822', status: true, cookie: true, xfbml: true}); 
    FB.Canvas.setAutoResize(true,100); 
    }; 
    (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> 

soy muy agradecidos por cualquier comentario o sugerencias, ya que estoy torciendo mi cabeza alrededor de éste durante más de un día de estos.

Respuesta

12

Algunos puntos clave para asegurarse de que se encuentran en los parámetros de la aplicación:

  1. lona Configuración -> Interpretar Método = iFrame
  2. lona Configuración -> iFrame tamaño = tamaño ajustable
  3. Migraciones -> nuevo SDK = Habilitado

Luego ajuste su código agregando un tiempo de espera (250 parece funcionar mejor, pero es posible que desee experimentar con el futuro r). He probado esto en FF3.6 e IE7 +. En IE hay un destello momentáneo de la barra de desplazamiento vertical que todavía estoy tratando de corregir.

<div id="fb-root"></div> 
<script type="text/javascript"> 
    window.fbAsyncInit = function() { 
    FB.init({appId: '12345678910', status: true, cookie: true, xfbml: true}); 
    window.setTimeout(function() { 
    FB.Canvas.setAutoResize(); 
    }, 250); 
    }; 
    (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> 
+1

Podría arreglar el flash de la barra de desplazamiento con desbordamiento: oculto en el cuerpo. – webjunkie

+0

Pude ocultar el flash de la barra de desplazamiento con desbordamiento: oculto en el cuerpo _and_ html. – jpadvo

+0

FYI, la razón por la que necesita agregar desbordamiento: oculto, como supongo es debido al margen y margen, FB usa JS para calcular el tamaño de su lienzo, que se calcula de manera diferente por los navegadores, algunos no incluyen el relleno y margen en la calcuacion – happyhardik

7

¡la solución es fácil! además de poner FB.Canvas.setAutoResize()
tiene que cambiar ur cuerpo al tipo de carrocería = "overflow: hidden"

funciona para mí! ahora ie8 está bien !!

2

También me gustaría señalar, que necesita de hecho su

<div id="fb-root"> 

para que esto funcione.

Cuestiones relacionadas