9

我即将将 Open Graph 协议引入现有的 HTML5 Web 应用程序,并且我想包含必要的 RDFa 数据,而不引入任何不必要的 crud。

我查看了HTML+RDFa 1.1草案并将其与Facebook 的 Open Graph 协议文档进行了比较,我只需要在元素上设置lang属性并且它已准备好 HTML5:html

<html lang="en">
<head xmlns:og="http://opengraphprotocol.org/schema/">
    <title>The Rock (1996)</title>
    <meta property="og:title" content="The Rock"/>
    <meta property="og:type" content="movie"/>
    ...

最初,我对 HTML5 中的 RDFa 支持感到困惑,有很多消息来源声称它无法以有效的方式完成,直到我最终进入草稿。我不是手头问题的专家,所以如果有人可以看看这个并评论草案在当今浏览器中所享有的支持,我将不胜感激。

4

5 回答 5

16

W3C 验证者抱怨每一个

<meta property="whatever" content...

要求将财产

<meta name="whatever ...

相反,对吧?如果 facebook 是你最关心的,我很高兴告诉你,它可以容忍后一种形式,所以就去做吧:

<meta name="og:title" content="My nice picture"/>
<meta name="og:type" content="article"/>
<meta name="og:url" content="http://foobar123.com/test/simple.php"/>

使用 FB 进行测试时:请注意,FB 会缓存页面解析(全局、facebook 端、硬重新加载无济于事),因此请确保每次在 url 中添加“唯一”(但毫无意义)路径信息或 GET 参数改变一些东西来测试它的facebook发布:

mysite.com/test.php/bogusParam1
mysite.com/test.php/bogusParam2
mysite.com/test.php/bogusParam3
...
mysite.com/test.php?foo=hello
mysite.com/test.php?foo=howdy
mysite.com/test.php?foo=aloha
于 2011-03-18T20:58:12.957 回答
6

HTML5 和 HTML+RDFa 1.1 都还在开发中,这意味着我们现在所说的一切都可能会发生变化。你的问题有两个方面:

  • 它有效吗?
  • 它会产生互操作性问题吗?

对于有效性,您可以定期检查W3C 验证器中规范的实施状态。它内置了一个实验性的 HTML5 验证器。

HTML5 中的命名空间仍在争论中。它们产生的问题会导致与真正意图不同的 DOM,这导致了我的第二个问题:互操作性问题。您可以使用Live Dom Viewer测试标记是如何处理的,或者使用Opera Dragonfly之类的工具在浏览器中探索文档的 DOM 表示。

如果您想进一步探索 HTML5 DOM 和 RDFa 的主题,您可能需要阅读 Jenni 的博客文章

到目前为止,您的标记并不是真正的问题,但如果您涉及 javascript,则必须小心命名空间和列值。

于 2011-01-25T19:55:09.587 回答
2

这份 2009 年草案似乎正在尝试构建一个对两者都有效的模式。

http://dev.w3.org/html5/rdfa/rdfa-module.html

于 2011-04-04T15:00:08.877 回答
1

这是在 html5 中进行操作的正确方法:

    <meta property="http://ogp.me/ns#locale" content="en_US" />
<meta property="http://ogp.me/ns#site_name" content="xxxxxx" />
<meta property="http://ogp.me/ns#type" content="website" />
<meta property="http://ogp.me/ns#title" content="xxxxxxxxxxxx" />
<meta property="http://ogp.me/ns#description" content="xxxxxxxxxxxxxxxx" />
<meta property="http://ogp.me/ns/fb#app_id" content="xxxxxxxxxxxxxxxx" />   

等等......希望它有帮助

于 2012-07-31T22:39:25.203 回答
1

现在,HTML5 验证器和 Facebook 都支持 HTML+RDFa 1.1,因此您现在可以只使用属性而不是名称。您也不必弄乱 html5 中的 xmlns 声明。og 前缀在 (RDFa) 规范中定义,因此您不必定义它。prefix="og: http://ogp.me/ns#"不过,您可以在 html 或 head 标签上明确说明。

于 2013-08-13T19:59:20.567 回答