“尝试调整画布时没有方法'setAutoResize'”

时间:2013-01-09 17:12:01

标签: javascript facebook canvas sdk

让我们从头开始。

情况:

我有一个应用程序。当我从Facebook主搜索栏中按名称(智能城市项目)搜索应用程序时,我看到Facebook中加载的应用程序,以及用于浏览内容的单个滚动条(https://apps.facebook.com/smartcityproject/)。一切都好。

当我进入页面(https://www.facebook.com/smartCanada)并单击应用程序选项卡时,它也会将我带到Facebook内的应用程序,但这个Facebook上下文不同(https://www.facebook.com/smartCanada/app_253415468099353 )。这里我们有一个来自Facebook的主滚动,以及来自页面iframe的内部滚动。

问题:

我必须只有一个卷轴。

文档(以及一些帖子,博客和论坛)说我可以使用FB.Canvas.setSize或setAutoGrow(https://developers.facebook.com/docs/reference/javascript/FB.Canvas.setSize/),但是我使用这些方法得到以下javascript错误:

Uncaught TypeError: Object #<Object> has no method 'setAutoResize'

在文件connect.facebook.net/en_US/all.js,第74行

问题:

任何人都知道我做错了什么? 'setAutoResize'方法不应该出现在Facebook库中吗?我必须等一些脚本加载?该方法实际上是否有效或不是?还有另一种方法可以改变iframe的高度吗?

感谢。

1 个答案:

答案 0 :(得分:0)

问题是你的脚本在这段代码时停止工作:

<script type="text/javascript">
    var userLanguage = '';

    window.fbAsyncInit = function(){

        // ...

        FB.Canvas.setAutoResize();

        // ...
    };

    // Load the SDK Asynchronously
    // ...
</script>

FB.Canvas.setAutoResize();现在已弃用,因此JavaScript会引发错误。您需要将此行替换为FB.Canvas.setAutoGrow();,或将其删除。

在脚本中还有第二个错误:

<script type="text/javascript">
    jQuery(document).ready(function() {
        FB.Canvas.setAutoGrow();
    }
</script>

将其更改为:

<script type="text/javascript">
    jQuery(document).ready(function() {
        FB.Canvas.setAutoGrow();
    })
    // Closing brace was missing!!
</script>