2012-01-31 87 views
0

我在我的页面上有一个类似的按钮,作为FB应用程序托管。问题是:将data-href留为空白,将喜欢的画布网址设置为“www.example.com/page.aspx”。 Window.location.href或window.top.location全部指向画布URL。Facebook应用程序 - FB像 - 应用程序的URL

我希望用户喜欢应用程序URL而不是画布URL。无论如何,我可以在代码背后得到这个?或在JavaScript?我不想指定这个,因为我想为多个应用程序执行此操作,每个应用程序都指向他们自己的应用程序url。

+0

请更具体。为了帮助我们需要一些细节,包括您使用的SDK,CMS,脚本语言等。 – 2012-01-31 09:48:12

+0

我正在使用Javascript API。 – Kunal 2012-01-31 16:21:54

+0

Alexandru:我发现window.top.location.href给出了最顶层父项的值。我的问题是能够记录在JavaScript中,并在实际页面加载之前将其传递给代码。我需要这个来获取设置为fb插件的URL。 – Kunal 2012-02-22 13:09:51

回答

1

通常你必须以某种方式初始化应用程序才能使用它,所以在你的配置中你应该有一个画布名称(或命名空间)。 另一种方法是查询graph-api的convas细节。查询应该是这个样子:

var app_data = FB.api("/you_app_id"); 

你应该Graph API Explorer首先测试它。另外请记住,如果您在每个页面请求中执行此操作,则这是一个昂贵的通话。您将获得一个数组,其中包含有关当前加载的应用程序的所有信息,包括画布名称。有了画布名称,你可以形成如下的应用程序URL:http://apps.facebook.com/your-canvas-name

+0

谢谢亚历山德鲁。有趣的做法。我想知道是否有可能以某种方式找到应用程序加载到的Iframe的父URL? – Kunal 2012-01-31 16:22:47

+0

父网址应该是这样的应用程序url:apps.facebook.com/ [your_canvas_namespace]和您从上面查询FB.api获得的命名空间 – 2012-01-31 20:05:52

0

简答:不!

较长的答案:您无法从另一个域中的某个框架获取任何信息。这是出于安全目的。所以,如果你尝试:

console.log(window.top.location.href); 

...当帧在相同的域,你会得到的网址。否则,你会得到一个安全例外。