10
votes

Facebook JavaScript SDK: fb.canvas.setautoresize Iframe ne fonctionne pas?

Nous avons construit une application Facebook avec Ruby / Rails et Fachebooker (application iframe) et sont actuellement bloqués avec le FB.Canvas.SetAutoresize qui semble échouer dans certains cas. Utilisation de l'exemple de Facebook Developer Docs (voir http://developers.facebook.com/docs/ Référence / JavaScript / ). L'autoretsize échoue une fois que vous entrez une page supérieure à 800px - afin de dire que cela fonctionne aussi longtemps que la toile devient plus grande, pas quand elle devient plus petite. quiconque a un indice ou peut-être une solution de contournement?

Voici la pièce de code de redimensionnement P>

<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>


0 commentaires

3 Réponses :


12
votes

Certaines éléments clés pour vous assurer sont définis dans les paramètres de l'application:

  1. Réglages de la toile -> Méthode de rendu = iframe
  2. Réglages de la toile -> Size iframe = Refenseur
  3. Migrations -> Nouveau SDK = activé

    Suivant Ajustez votre code en ajoutant un délai d'attente (250 semble fonctionner mieux, mais vous voudrez peut-être expérimenter Futther). J'ai testé cela dans FF3.6 et IE7 +. En IE, il y a un flash momentané de la barre de défilement verticale que j'essaie toujours de réparer. xxx


4 commentaires

Vous pouvez peut-être corriger le flash de la barre de défilement avec débordement: caché sur le corps.


J'ai pu masquer le flash de la barre de défilement avec trop-plein: caché sur le corps et html.


FYI, la raison pour laquelle vous devez ajouter un débordement: caché, car je suppose que c'est à cause du rembourrage et de la marge, FB utilise JS pour calculer la taille de votre toile, qui est calculée différemment par des navigateurs, certains n'incluent pas le rembourrage et la marge dans le calcul.


SetAutoresize ne fonctionnera plus car il a été renommé à Setautogrow. Voyez ici: développeurs.facebook.com/docs/reference/javascript/ ...



7
votes

La solution est facile! En plus de mettre FB.Canvas.setautoresize ()
Vous devez changer votre corps en style de corps = "Overflow: caché"

Cela fonctionne pour moi! Maintenant, IE8 est OK !!


0 commentaires

2
votes

J'aimerais aussi souligner que vous avez besoin de votre xxx

pour que cela fonctionne.


0 commentaires