【问题标题】:Facebook Like Button Popup doesn't loadFacebook Like Button Popup 无法加载
【发布时间】:2011-12-19 19:42:09
【问题描述】:

这是我提出的第一个问题,所以如果我遗漏了细节,请宽容一点。谢谢!

我在我的网站上使用 Facebook Like Button 插件(尝试了 HTML5 版本和 xfbml 版本)。我已经包含了所有必要的标签和脚本来支持 xfbml 和 HTML5。我已遵循“规范”并在此处和其他地方对问题进行了彻底的搜索:

“点赞”按钮功能正常,只是在单击按钮后应该显示的弹出/弹出窗口没有加载。我的意思是 load,而不是 show(是的,我已经根据 spec 检查了 overflow:hidden 问题)。新的<span>(包括<iframe>)在点赞按钮<span> 之后立即添加到DOM,它们会加载所有应该存在的代码:

<span class=" fb_edge_comment_widget fb_iframe_widget " style="top: 19px; left: 0px; z-index: 10000;">
  <span>
    <iframe id="fa02aa64d8da" class="fb_ltr" scrolling="no" name="fee6eb9f6f2768" style="border: medium none; overflow: hidden; height: 225px; width: 401px;" src="http://www.facebook.com/plugins/comment_widget_shell.php?api_key=233493930007947&locale=en_US&master_frame_name=fa12240bc73214&sdk=joey">
      <html>
        <head>
        <body onload="onPageLoad()">
          <script>
            var onPageLoad = function() {
              document.domain = 'facebook.com';
              var loc = window.location.toString();
              var index = loc.indexOf('?');
              var qs = loc.substring(index + 1);
              var params = qs.split('&');
              var master_frame_name = '';
              for (var i in params) {
                var components = params[i].split('=');
                if (components[0] == 'master_frame_name') {
                  master_frame_name = components[1];
                  break;
                }
              }
              try {
                var master_frame = parent.frames[master_frame_name];
                master_frame.ExternalNodeConnectWidget.onCommentWidgetLoaded(document);
              } catch (e) {}
            };
          </script>
        </body>
      </html>
    </iframe>
  </span>
</span>

现在在加载&lt;span&gt; 之后,它应该触发脚本函数onPageLoad,它应该将所有数据加载&lt;iframe&gt;。相反,我得到了一堆错误:

  1. 有臭名昭著的Unsafe Javascript attempt to access frame with URL
  2. 当您在控制台/Firebug 中手动运行 onPageLoad() 函数(希望它将内容加载到 iframe 中)时,您会得到

(在 Chrome 15 中)

    Error: SECURITY_ERR: DOM Exception 18
      code: 18
      message: "SECURITY_ERR: DOM Exception 18"
      name: "SECURITY_ERR"
      __proto__: DOMException

(在 Firefox 7 中)

    Error: Illegal document.domain value
    document.domain = 'facebook.com';

我认为这与跨域请求有关,但对于其他人来说,他们只是收到错误消息,但弹出窗口仍然可以正常加载。 任何想法如何让它发挥作用?

【问题讨论】:

    标签: facebook plugins cross-domain facebook-like


    【解决方案1】:

    这是一个已知的 Facebook 错误:http://developers.facebook.com/bugs/293075054049400

    基本上,如果在 Facebook 用户的帐户上启用了安全浏览,就会出现这种行为。

    【讨论】:

    • 谢谢!好像是在我在这里询问几周后才报告的。
    【解决方案2】:

    如果您禁用了安全浏览(默认情况下),这是另一种可能的解决方案: 您不能在 og:url 中使用 localhost,因为 Facebook 无法浏览该页面来获取数据。因此,在开发时,请在 og:url、og:image、like/share 按钮 url 等中输入实时站点 URL。即使这样可能无济于事,当我部署它时,需要在实时站点上进行点击,它工作正常。

    任何人都知道可以解决此问题以使其在本地开发时更容易?

    【讨论】:

    • 一般来说,在本地开发时,我可以通过将http://localhost/ 添加到您的 FB 开发人员应用程序界面的“移动 Web URL”部分来获得大部分 Facebook 功能。这使您可以使用与普通域完全不同的域,并且仍然可以使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多