如何使用Javascript插入Facebook登录按钮?

如何使用Javascript插入Facebook登录按钮?,javascript,facebook,facebook-login,Javascript,Facebook,Facebook Login,我想使用Javascript将Facebook登录按钮添加到我的HTML页面: var button = document.createElement("fb:login-button"); button.size = "xlarge"; parent.appendChild(button); 按钮出现,可以成功添加非Facebook特定属性,如id和lang。但是,添加“大小”属性无效 另外,如果我尝试使用按钮.createAttribute()添加任何属性,我会得到 未捕获类型错误:对象#

我想使用Javascript将Facebook登录按钮添加到我的HTML页面:

var button = document.createElement("fb:login-button");
button.size = "xlarge";
parent.appendChild(button);
按钮出现,可以成功添加非Facebook特定属性,如
id
lang
。但是,添加“大小”属性无效

另外,如果我尝试使用
按钮.createAttribute()
添加任何属性,我会得到

未捕获类型错误:对象#
没有方法“createAttribute”

为什么Facebook的登录按钮即使出现在页面上也不能被识别为有效的HTML元素?使用Javascript插入Facebook登录按钮并更改其大小的正确方法是什么?

您需要动态呈现这些社交插件。初始化SDK后,您可以随心所欲地操作页面,然后只需调用
FB.XFBML.parse()
函数即可正确显示标记

您甚至可以调用特定元素上的函数以获得更多控制:

FB.XFBML.parse( document.getElementById( 'some-element' ) );
// or with jQuery
FB.XFBML.parse( $( "#some-element" )[0] )
您还应尝试将标记手动附加为字符串:

element.innerHTML += '<fb:login-button id="some-element" size="xlarge"/>'; 
FB.XFBML.parse( document.getElementById( 'some-element' ) );
element.innerHTML+='';
parse(document.getElementById('someElement');

以下是来自以下网站的概述:

此函数解析并呈现计算机上文档中的XFBML标记 飞行。如果您通过ajax从服务器发送XFBML,则可以使用此选项 并希望将其呈现在客户端。XFBML使您能够合并 将FBML导入您的网站和IFrame应用程序

可以使用此方法分析以下XFBML标记:

  • fb:活动
  • fb:评论
  • 朋友堆
  • fb:就像
  • fb:像盒子一样
  • fb:login按钮您需要动态呈现这些社交插件。初始化SDK后,您可以随心所欲地操作页面,然后只需调用
    FB.XFBML.parse()
    函数即可正确显示标记

    您甚至可以调用特定元素上的函数以获得更多控制:

    FB.XFBML.parse( document.getElementById( 'some-element' ) );
    // or with jQuery
    FB.XFBML.parse( $( "#some-element" )[0] )
    
    您还应尝试将标记手动附加为字符串:

    element.innerHTML += '<fb:login-button id="some-element" size="xlarge"/>'; 
    FB.XFBML.parse( document.getElementById( 'some-element' ) );
    
    element.innerHTML+='';
    parse(document.getElementById('someElement');
    

    以下是来自以下网站的概述:

    此函数解析并呈现计算机上文档中的XFBML标记 飞行。如果您通过ajax从服务器发送XFBML,则可以使用此选项 并希望将其呈现在客户端。XFBML使您能够合并 将FBML导入您的网站和IFrame应用程序

    可以使用此方法分析以下XFBML标记:

    • fb:活动
    • fb:评论
    • 朋友堆
    • fb:就像
    • fb:像盒子一样

    • fb:login按钮如果我对整个文档(无参数)或父节点调用此函数,我会得到两个登录按钮,都正常工作,大小都正常。如果我在按钮本身上调用它,什么也不会发生,因为它所调用的元素。因此,只需在
      appendChild()
      之后调用parse函数。不知道为什么会出现两个插件。。。如果您“手动”触发解析,请检查
      xfbml
      是否设置为false(在JSSDK中)-这可能是解析标记两次的原因。我在
      appendChild()
      之后调用它,正如您所预测的,当
      xfbml
      设置为false时,重复将消失。但是,这仍然不能使按钮的大小正确(好的,我是通过手动编写HTML来实现的:
      parent.innerHTML+='';FB.XFBML.parse(content);
      。这几乎是有道理的:您希望为XFBML解析器创建原始文本,而不是扩展DOM树。请随意编辑答案以包含工作代码。您需要调用FB.XFBML.parse()在element的父元素上如果我在整个文档(无参数)或父节点上调用此函数,我会得到两个登录按钮,都正常工作,大小都正常。如果我在按钮本身上调用它,什么都不会发生,因为调用它的元素。因此,只需在
      appendChild()之后调用解析函数
      。不确定为什么会出现两个插件…如果您“手动”触发解析,请检查
      xfbml
      是否设置为false(在JS SDK中)-这可能是解析标记两次的原因。我在
      appendChild()之后调用它
      ,正如您所预测的,当
      xfbml
      设置为false时,重复将消失。但是,这仍然不能使按钮的大小正确。:(好的,我通过手动编写HTML:
      parent.innerHTML+='';FB.xfbml.parse(content)来实现它);
      。这几乎是有道理的:您希望为XFBML解析器创建原始文本,而不是扩展DOM树。请随意编辑答案以包含工作代码。您需要在元素的父元素上调用FB.xfml.parse()