FB.Canvas.setSize()在Safari和Chrome中似乎不起作用。如何使它工作?

FB.Canvas.setSize()在Safari和Chrome中似乎不起作用。如何使它工作?,safari,scrollbar,facebook-javascript-sdk,facebook-iframe,facebook-canvas,Safari,Scrollbar,Facebook Javascript Sdk,Facebook Iframe,Facebook Canvas,我正在创建一个Facebook画布应用程序以加载到iframe中 由于加载了动态数据,内容的高度可能会有所不同,因此无法预先设置。画布应自动调整自身大小以适应内容。我需要在所有现代浏览器中去掉iframe中的垂直滚动条 我在应用程序的高级设置中设置了“Canvas Height:Fixed at 800px”,并使用建议使用的FB.Canvas.setSize()解决方案: <body> <div id="fb-root"></div> <

我正在创建一个Facebook画布应用程序以加载到iframe中

由于加载了动态数据,内容的高度可能会有所不同,因此无法预先设置。画布应自动调整自身大小以适应内容。我需要在所有现代浏览器中去掉iframe中的垂直滚动条

我在应用程序的高级设置中设置了“Canvas Height:Fixed at 800px”,并使用建议使用的FB.Canvas.setSize()解决方案:

<body>
    <div id="fb-root"></div>
    <script type="text/javascript">
        window.fbAsyncInit = function () {
            FB.init({
                appId: 'NNNN', // My App ID is placed here
                status: true,
                cookie: true,
                xfbml: true
            });
            FB.Canvas.setSize();
            FB.Canvas.setAutoGrow(7);
        };

        function sizeChangeCallback() {
            FB.Canvas.setSize();
        }

        // Load the SDK Asynchronously
        (function (d) {
            var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
            if (d.getElementById(id)) { return; }
            js = d.createElement('script'); js.id = id; js.async = true;
            js.src = d.location.protocol + "//connect.facebook.net/en_US/all.js";
            ref.parentNode.insertBefore(js, ref);
        } (document));
        ...
    </script>
    ...
</body>

window.fbAsyninit=函数(){
FB.init({
appId:'NNNN',//我的应用ID放在这里
状态:正确,
曲奇:是的,
xfbml:对
});
FB.Canvas.setSize();
FB.Canvas.setAutoGrow(7);
};
函数sizeChangeCallback(){
FB.Canvas.setSize();
}
//异步加载SDK
(职能(d){
var js,id='facebook jssdk',ref=d.getElementsByTagName('script')[0];
if(d.getElementById(id)){return;}
js=d.createElement('script');js.id=id;js.async=true;
js.src=d.location.protocol+“//connect.facebook.net/en_US/all.js”;
ref.parentNode.insertBefore(js,ref);
}(文件);
...
...
它在Firefox、MSIE9和Opera中运行良好。但它在Windows上的WebKit浏览器中不起作用:Safari和Chrome

Safari为画布iframe显示以下代码:

<iframe class="canvas_iframe_util noresize" frameborder="0" scrolling="no" id="iframe_canvas" name="iframe_canvas" src='javascript:""' height="800" style="height: 800px; overflow-y: hidden; "></iframe>


我做错了什么?可以同时在Firefox、MSIE、Opera、Safari和Chrome中使用吗?

我只使用“FB.Canvas.setAutoGrow();”(在相同的位置,但没有参数)自动调整iFrame的大小,效果很好。滚动条也被删除。其他地方会有问题吗?

我刚刚遇到了似乎相同的问题,我认为这是一个与webkit相关的问题。经过大量调试,我得出结论,如果页面的
标记设置为
高度:100%,FB无法检测高度。我希望这能帮助一些可怜的人

谢谢大家!!我也试过这种变体。但它也适用于Firefox,但不适用于Safari和Chrome。它适用于我在Mac上的Safari(5.1.1),这让我想知道问题是否存在于其他地方——可能是时间问题?FB setAutoGrow()调用是否在您完成动态引入页面内容之前进行?只是想一想,对不起,我帮不上什么忙。我现在在Windows上使用Safari 5.1.5。仅供参考,它在我的Mac上的Chrome(19)中也可以使用。我怀疑操作系统对您的问题的责任要大于自动调整调用的时间(尽管只是一个理论)。祝你好运