新的Facebook就像按钮HTML验证

Eri*_*ari 36 html facebook

在我的页面上添加新的facebook like按钮后,它不再使用XHTML严格标准验证.我遇到的两个错误是:

  1. 所有元属性标签都表示没有属性属性 ;
  2. 列出了类似按钮行中使用的所有变量,它们没有属性.该行如下:

    <fb:like href="http://www.pampamanta.org" layout="button_count" show_faces="false" width="120" action="like" font="arial" colorscheme="light"></fb:like>

fiv*_*ust 43

这是一个不交换doctype的解决方案:

正如zerkms建议的那样,添加"fb"命名空间仅适用于"fb:"属性.元标记的"property"属性仍然是无效的XHTML.

如您所知,Facebook建立在RDFa合规性的基础上,因此您可以使用以下doctype:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"> 
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,使用RDFa会带来比简单的FB问题修复更多的问题.

正如_timm建议的那样,动态地将元标记写入dom没有任何意义.这些fb元标记的主要用途之一是FB-bot解析"共享"或"我喜欢"目标页面(动作页面),以便为自动填充的facebok墙壁提供自定义标题,图像和锚标签.鉴于这一事实并且鉴于facebook肯定使用简单的页面提取来读取传递的html响应,而没有任何解析通过javascript注入相关元标记的能力,预期的功能将完全失败.

现在,有一个非常简单的解决方案,可以在Facebook上验证XHTML验证和成功解析之间做出妥协:在HTML评论中包装facebook meta.绕过w3c解析器并且facebook仍然识别元标记,导致它忽略评论.

<!--
<meta property="og:image" content="myimage.jpg" />
<meta property="og:title" content="my custom title for facebook" />
-->
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚对此进行了测试,Facebook忽略了评论并恢复了从DOM获取数据.对于任何想要测试他们获取数据的人来说,这里是[FB的Linter](https://developers.facebook.com/tools/lint). (3认同)

小智 25

从今天开始,您还可以使用符合HTML5的标记

例如,而不是

<fb:like href="example.org">
Run Code Online (Sandbox Code Playgroud)

你可以做

<div class="fb-like" data-href="example.org">
Run Code Online (Sandbox Code Playgroud)

由于data-*属性在HTML5中有效