代码之家  ›  专栏  ›  技术社区  ›  Nosredna

在制作Facebook应用程序时,javascript在哪些方面受到限制?

  •  12
  • Nosredna  · 技术社区  · 15 年前

    我被要求做Facebook应用程序。在我做出任何承诺之前,我想知道一个游戏有多容易被转移到Facebook?(我完全可以在浏览器中用javascript制作游戏。)

    Facebook是否以某种方式过滤javascript?我可以使用jquery或其他JS库吗?我可以通过动态改变DOM来做动画吗?最好使用iframe还是fbml?

    我在facebook dev网站上做了一些调查。但我想听听做过这项工作的人,他们的学习曲线是什么样的。

    3 回复  |  直到 13 年前
        1
  •  9
  •   DSchultz    13 年前

    Facebook上下文中的javascript是不同的,因为当它通过Facebook时,所有的javascript都会被重写。要了解差异(其中有许多差异),请从 FBJS Documentation . 这个 getting started 导游是一个很好的入门。

    将成为你的圣经的网站是 wiki.developers.facebook.com 在FB平台方面是规范的。另外,正如我们所了解的那样(爱?讨厌?)Facebook平台是一个移动的目标,因此通过Facebook上的开发者小组来了解情况是很有用的。我也喜欢这个博客 Inside Facebook .

    大多数允许开发人员 在其域中嵌入javascript 强制开发人员使用iframes 沙盒他们的代码。Facebook已经 解决这个问题的另一种方法。 你给我们的javascript 以及任何标识符(函数 和变量名)以 您的应用程序ID。例如, 以下代码块:

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

    }

    变成:

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

    这将为每个 在Facebook中运行的应用程序。 从那里我们可以确定 通过集合 允许您 在Facebook上修改你的内容。我们的 对象是为了模仿 Javascript的功能 尽可能,但可能需要一些 习惯于那些 已经熟练使用了javascript。

    在普通的javascript中,许多简单的元素必须通过FBJS中的特殊方法调用来完成。例如,在JS中引用表单字段的值时, .value ,而在FBJ中,您需要 .getValue() . 正是这些差异阻止了简单地将JS从其他地方剪切和粘贴到Facebook上。

    这是一个基本的初级读物。你应该开始了。对你最好!

        2
  •  2
  •   Mike Heinz    15 年前

    简单的解决方案是将整个游戏包装在一个iframe中。FB本身过滤掉了很多JavaScript调用——基本上,任何涉及窗口或文档对象的调用都可能无法工作。

        3
  •  1
  •   Unreality    15 年前

    不难,我想说,因为你已经有能力编程一个游戏,它应该是对你编程一个Facebook应用程序,以及迁移一个游戏到Facebook。

    据我所知,使用fbml,您的javascript将变得无用(是的,您的javascript将被过滤)

    因此,您必须使用iframe,您的javascript将保持功能(只要您的javascript不接触fbml标记)

    Facebook API文档是出了名的糟糕。