链接到Facebook iframe中的页面

时间:2012-04-10 16:29:58

标签: javascript html facebook iframe hyperlink

我正在寻找一种链接到facebook iframe页面中的网页的方法

所以

http://www.facebook.com/designmystyle/app_244351832329915

会像

http://www.facebook.com/designmystyle/app_244351832329915?http://www.lickmystyle.com/contact/

我使用

尝试了此方法http://www.codingforums.com/archive/index.php/t-85547.html
    <script type="text/javascript">
    <!--

    function loadIframe(){
    if (location.search.length > 0){
    url = unescape(location.search.substring(1))

    window.frames["app_runner4f84331f0576e6f73380702"].location=url
    }
    }

    onload=loadI

frame
//-->

我不确定app_runner4f84331f0576e6f73380702是否是iframe的名称或ID,但它是我能找到的唯一一个宽度为810px×800px的

关于是否可以这样做的任何想法都会很棒

1 个答案:

答案 0 :(得分:1)

如果它是一个Facebook画布应用程序,那么它的网址应该是 apps.facebook.com 而不是 www.facebook.com

任何将添加到您的画布应用程序网址的查询字符串参数将在Facebook加载到您的应用程序的网址时通过将其添加到您的应用程序的网址时传递给您的应用程序,因此如果您将用户指向:

  

apps.facebook.com/app-name?param=value

Facebook会将应用程序画布iframe发布到:

  

www.yourdomain.com/canvas-path?param=value

然后您可以像任何其他GET参数一样获取该参数以及您想要的内容。 但有一点,如果该参数是一个url,那么它应该是url编码的,其他明智的事情都会出错。

我不明白你想要将你想要作为参数传递的网址做什么,这是什么“app_runner4f84331f0576e6f73380702”?


修改

哦,这是一个页面标签,对不起,我错过了那个部分。

我之前从未使用它,但它在Page Tab Tutorial的最后一节(与Facebook API集成)中说过:

  

您的应用还会收到名为app_data的字符串参数作为部分   如果在原始中设置了app_data参数,则为signed_request   加载选项卡的URL中的查询字符串。对于立即购买链接   上面,这可能是这样的:   “http://www.facebook.com/YourPage?v=app_1234567890&app_data=any_string_here”。   如果您控制,您可以使用它来自定义您呈现的内容   链接的生成。

据我所知,这正是您获取数据所需的。

然而,由于您无法访问父窗口,您将无法以您发布的方式更改iframe的网址(您的网页位于与Facebook不同的网域上,并且浏览器会阻止它到期跨域政策)。

你能做什么只是:

document.location.href = URL;

您在自己的页面中,无论它位于iframe中都无关紧要。

问题是你不需要所有这些,只要在服务器端知道从facebook(从查询字符串)传递给你的参数(如果存在),并根据该页面呈现页面。 没有理由呈现一个页面,然后将页面重定向到另一个URL,当您已经知道用户想要什么时,您只是让用户对您的服务器进行冗余往返。