【问题标题】:How to embed iframe in facebook?如何在 Facebook 中嵌入 iframe?
【发布时间】:2010-06-24 18:28:50
【问题描述】:

我的一位同事为我们工作的公司维护了一个 Facebook 页面。

公司希望在他们的 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 正在将东西附加到我们的变量中,所以 link_1 变成了 a325461252_link_1 之类的东西

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

未捕获的引用错误: a325461252_link_1 未定义

但每隔一段时间它会起作用,但 99% 的时间我们都会收到此错误。

我以前从未为 facebook 构建过任何东西,我不确定是否存在某种 facebook 做事方式。

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

【问题讨论】:

  • 如果需要,您可以使用他们的 ajax api 直接在 Facebook 页面上执行 ajax,或者您可以使用 fb:iframe 标签嵌入任何 iframe 并在该 iframe 中执行所有操作。为什么要这么多额外的代码?

标签: facebook iframe


【解决方案1】:

检查您的应用程序是否设置为 FBML 应用程序而不是 Iframe 应用程序。默认情况下,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 应用程序中。

顺便说一句:要以编程方式在 Facebook 中添加 iframe,您可以像这样使用 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>

祝你好运!

【讨论】:

  • 这个功能还能用吗? fb:iframe 似乎不起作用
  • 我已经很多年没有做过 facebook 编程了,但我很确定 FBML 早就死了......
猜你喜欢
  • 1970-01-01
  • 2011-07-18
  • 2016-10-09
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
  • 2017-02-02
  • 2011-11-23
  • 2015-05-03
相关资源
最近更新 更多