制作Facebook应用时,JavaScript有哪些限制?

12

我被要求制作Facebook应用程序。在做出承诺之前,我想知道一个游戏能否轻松地移植到Facebook上?(我完全熟练地在浏览器中使用JavaScript制作游戏。)

Facebook是否以某种方式过滤JavaScript?我能否使用jQuery或其他JS库?我能否通过实时更改DOM来进行动画制作?是使用iFrame还是FBML最好?

我已经在Facebook开发网站上进行了一些探索。但我想听听有经验的人谈论一下学习曲线。

3个回答

9
在Facebook环境下,JavaScript与众不同的地方在于,所有内容都会随着Facebook的变化而被重写。如果想了解其中的差异(有很多),可以从FBJS文档开始。 入门指南是个好的起点。
成为您"圣经"的网站是wiki.developers.facebook.com,它在FB平台上具有权威性。此外,正如我们所知道的,Facebook平台是一个不断变化的目标,因此通过Facebook上的开发者组保持更新是很有用的。我也喜欢博客Inside Facebook

Most providers who allow developers to embed JavaScript within their domain force developers to use iframes to sandbox their code. Facebook has taken a different approach to this problem. JavaScript that you give us gets parsed, and any identifiers (function and variable names) get prepended with your application ID. For example, the following code block:

function foo(bar) { var obj = {property: bar}; return obj.property;

}

becomes:

function a12345_foo(a12345_bar) { var a12345_obj = {property: a12345_bar}; return a12345_obj.property; }

This creates a virtual scope for every application that runs within Facebook. From there we expose certain functionality through a collection of JavaScript objects that allow you to modify your content on Facebook. Our objects are made to mimic the functionality of JavaScript as closely as possible, but it may take some getting used to for people who are already adept with JavaScript.

许多在普通JavaScript中只是元素的项目,必须通过FBJS的特殊方法调用来完成。例如,在JS中引用表单字段的值时,您使用.value,而在FBJS中,您需要使用.getValue()。正是这些差异防止了将其他地方的JS简单剪切和粘贴到Facebook中。
那就是一个基本的入门指南。这应该能让您开始。祝您一切顺利!

有没有办法改变绝对定位 div 的顶部和左侧?我在链接中找不到相关信息。 - Nosredna
我没有做过那个,但我认为你可以使用setStyle()来实现。obj.setStyle({position: 'absolute', top: '10px', left: '10px'}); - artlung

2
简单的解决方案是将整个游戏放在一个iFrame中。Facebook本身会过滤掉很多JavaScript调用 - 基本上任何涉及窗口或文档对象的内容可能都不会起作用。

1
不算太难,既然你已经有编写游戏程序的能力,编写Facebook应用并将游戏迁移到Facebook上应该没问题。
据我所知,使用FBML会使你的JavaScript无效(是的,你的JavaScript将被过滤)。
所以你需要使用iFrame,这样你的JavaScript仍然可以正常运行(只要你的JavaScript不涉及到FBML标签)。
Facebook的API文档非常糟糕。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接