2010-06-24 92 views
3

我的一个员工为我们工作的公司维护一个Facebook页面。如何在Facebook中嵌入iframe?

公司想要一个小工具,把自己的Facebook来让用户输入他们的电子邮件和订阅我们的通讯。

谁做Facebook上联想是不是程序设计师,所以他问我建立的东西。

我做的,用了jQuery和Ajax允许你输入你的电子邮件地址的小页面,并使用AJAX,所以你永远不会离开你的页面发送到我们的服务器。

我们希望使用iframe将此页面嵌入到Facebook上。

首先,我们只是试图进入的iframe,没有工作,

后来我们发现一个教程,并试图嵌入的iframe,它说的方式是这样的:

<a onClick="outside_location.setInnerFBML(link_1);" style="cursor: pointer;">Let's see that iframe....</a> 
<div id="outside_location"></div> 
<fb:js-string var="link_1"> 
<fb:iframe height="500" allowTransparency="true" frameborder="0" scrolling="no" style="width:100%; border:none" src="http://URL-TO-OUTSIDE-LOCATION"></fb:iframe> 
</fb:js-string> 

<script type="text/javascript" charset="utf-8"> 
var outside_location = document.getElementById('outside_location'); 
</script> 

看起来像Facebook被附加的东西给我们的变量,这样变得像a325461252_link_1

然后我们得到了一个JS错误是这样的:

Uncaught reference error: a325461252_link_1 not defined

但每过一段时间它会工作但99%的时间,我们得到这个错误。

我以前从来没有建成为Facebook什么,我不知道有是某种处事方式的Facebook。

有什么我做错了吗?我做了很多谷歌搜索试图找到答案,我发现的一切从“Facebook不允许iframes”到“facebook推荐iframes”,所以我真的不知道该怎么想。

+0

如果需要使用ajax api,您可以直接在Facebook页面上执行ajax,或者您可以使用'fb:iframe'标记嵌入任何iframe并执行iframe中的所有操作。为什么所有额外的代码? – serg 2010-06-24 19:51:58

回答

3

检查,看看您的应用程序是设置为FBML应用程序了,而不是一个I帧应用。 iframe应用程序默认不会扩展fb:...标记。同时检查DOM(Chrome或Firebug)以查看当您单击该链接时是否更改了Dom,但是iframe不可见。

我刚刚测试了以下和它的工作:

<hr/> 
<a onClick="outside_location.setInnerFBML(location_two);" style="cursor: pointer;">Other IFrame Location</a> 
<div id="outside_location" width="540" height="270" > 
    <fb:iframe width="540" height="270" frameborder="1" src="http://www.yahoo.com" /> 
</div> 

<fb:js-string var="location_two"> 
    <fb:iframe width="540" height="270" frameborder='1' src='http://www.google.com' /> 
</fb:js-string> 

<script type="text/javascript" charset="utf-8"> 
    var outside_location = document.getElementById('outside_location'); 
</script> 

如果你想要做的一切就是添加一个iFrame到您的应用程序的画布,那么你可以简单地使用这一行:

<fb:iframe width="720" height="570" frameborder="1" src="http://www.yahoo.com" /> 

或者只需将应用程序从FBML画布应用程序更改为iFrame应用程序,并将Canvas回调和连接URL指向当前页面或页面的目录即可。如果您没有使用Facebook的API或FBML元素,那么您可能根本不需要进入FBML应用程序。

BTW:以编程方式添加的I帧在Facebook中,你可以使用JavaScript像这样:

<script type="text/javascript"> 

    var Iframe = document.createElement('iframe'); 
    Iframe.setStyle('smartsize','true'); 
    Iframe.setStyle('frameborder','yes'); 
    Iframe.setStyle('scrolling','no'); 
    Iframe.setStyle('include_fb_sig','true'); 
    Iframe.setStyle('width','500px'); 
    Iframe.setStyle('height','500px'); 
    Iframe.setSrc("http://www.msn.com"); 
    document.getRootElement().appendChild(Iframe); 

</script> 

祝您好运!

+0

此功能仍可用吗? 'fb:iframe'似乎不起作用 – ravi404 2016-08-09 12:28:02

+0

我还没有做过几年的Facebook编程,但我很确定FBML早就死了.... – eSniff 2016-08-10 16:30:41