Высота холста приложения на вкладке Facebook - проблема с Firefox - PullRequest
2 голосов
/ 24 октября 2011

Я создал приложение, которое будет использоваться в качестве вкладки на странице.
Поскольку его содержимое слишком длинное, мне нужно установить высоту iframe, чтобы не было полосы прокрутки.
Моя проблема в том, что он отлично работает в Chrome и т. Д., Но не в Firefox.
Вот что я сделал:

<?php
    $signed_request = $_REQUEST["signed_request"];
    list($encoded_sig, $payload) = explode('.', $signed_request, 2);
    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
?>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    <style type="text/css">
      * {
            padding:0; margin:0; border: none; outline:none
        }
    </style>

</head>
<body style="width:520px; overflow:hidden">
<?php
     if (empty($data["page"]["liked"])) {
        echo "<img src=\"img/blur.jpg\" />";
    }
    else {
        echo "<img src=\"img/fan.jpg\" />";
    }
?>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
    FB.init({
    appId : 'xxx_app_id',
    status : true,
    cookie : true,
    xfbml : true
});
</script>
<script type="text/javascript">
    window.fbAsyncInit = function() {
         FB.Canvas.setSize({ width: 520, height: 3591 });
    }
    function sizeChangeCallback() {
        FB.Canvas.setSize({ width: 520, height: 3591 });
     }
</script>
</body>
</html>

Более того, я делал одно и то же приложение 3-4 раза, и оно работало, так что теперь я просто изменил отображаемые изображения.
Глядя на консоль Firebug, я не вижу ошибок, и проверяя примененный CSS (снова из Firebug), я вижу высоту iframe 800px.

1 Ответ

1 голос
/ 24 октября 2011

Хорошо, очевидно, fbAsyncInit никогда не вызывался, поэтому я исправил проблему, вызвав метод вручную следующим образом:

<script type="text/javascript">
    window.fbAsyncInit = function() {
         FB.Canvas.setSize({ width: 520, height: 3591 });
    }
    function sizeChangeCallback() {
        FB.Canvas.setSize({ width: 520, height: 3591 });
    }
    window.fbAsyncInit();
</script>

Теперь все отлично работает.
Если у кого-то есть хоть какая-то подсказка, почему это происходит только в ff и только в этом приложении (как я уже говорил в вопросе, я создал точное приложение 3-4 раза - просто с разными изображениями и текстом), я был бы рад поделиться здесь ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...