2

我已经构建了一个应用程序以用作页面中的选项卡。
由于它的内容太长,我需要设置 iframe 高度,所以没有滚动条。
我的问题是它在 chrome & ie 中运行良好,但在 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。

4

1 回答 1

1

好的,显然 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 次确切的应用程序 - 只有不同的图像和文本 - )我很感激在这里分享...

于 2011-10-24T09:33:27.677 回答