Sco*_*eld 58 validation html5 facebook opengraph
有没有办法让facebook蹩脚的Open Graph元标记验证我的doctype是否为<!DOCTYPE html>
(HTML5)?
除了facebook的Open Graph元标记,我的文档完美验证.
我真的不想使用,<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
因为这会产生一整套新的问题.
以下是其中一个验证错误的示例...
错误第11行,第47列:此时元素元素上不允许使用属性属性.
<meta property="og:type" content="website" />
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激...我一直在寻找和开启几天无济于事.
Bla*_*ise 13
对于HTML5,将其添加到您的html
元素,如ogp.me中所述,并保留您的og:
前缀属性:
<!doctype html>
<html prefix="og: http://ogp.me/ns#">
<head>
<meta property="og:type" content="website" />
...
Run Code Online (Sandbox Code Playgroud)
对于XHTML(如OP的问题),请使用name
属性而不是property
属性.Facebook lint将发出警告,但元值仍将被识别和解析.
<meta name="og:title" content="Hello Facebook" />
Run Code Online (Sandbox Code Playgroud)
Jus*_*tin 12
是的.要验证为HTML5,请prefix
从Open Graph文档添加属性:
<!DOCTYPE html>
<html prefix="og: http://ogp.me/ns#">
<head>
<title>Valid HTML5!</title>
<meta charset="utf-8"/>
<meta property="og:title" content="">
</head>
<body></body>
</html>
Run Code Online (Sandbox Code Playgroud)
将上面的内容复制并粘贴到w3验证器上进行检查.
生产就绪 - Apple在apple.com上使用这种方法.
jus*_*eez 11
简短的回答是不,不是在这个时候.所有其他答案都是变通方法,黑客攻击,或者只是简单的疯狂.唯一的长期解决方案是Facebook需要创建一个有效HTML5的替代语法.
对于那些通过"facebookexternalhit"用户代理推荐Facebook目标的人,你必须记住其他公司正在跟随这些标签的Facebook领先.例如,如果不存在首选的Schema.org标记,则Google+将回退到OpenGraph标记.由于大多数网站都没有使用Schema.org属性(特别是如果他们花时间正确使用OpenGraph),您可以通过遵循此建议轻松地错过在Google+等网站上增强您的代码段.
随着Facebook的无处不在,直接针对它们确实不是一个好的解决方案 - 即使他们选择的实现对开发人员来说也是有问题的.在Stack Overflow等网站上寻找解决方案时,您必须始终记住这些方法可能会产生无法预料的后果.
对于我们的主要网站,我们坚持使用XHTML + RDFa进行验证,并且它运行良好.我希望随着HTML5的使用增长,Facebook团队将开始接受这种元数据的有效格式.
至于为什么我们关心验证: 我们发现,如果可能的话,验证有助于提醒我们页面中的错误,而不是教我们忽略它们.既然我们都在我们的浏览器使用的验证信息,我们立即知道,如果有一个页面上的验证错误(或警告),并可以研究是否有可能消除它(它是时间,这99 +%).这节省了我们处理规范的限制性实现的时间,特别是在现今的边缘和移动平台上.我们已经看到奇怪错误的大幅减少,因为我们知道我们的页面是有效的,并且知道浏览器中发生的事情与特定UA可能无法按预期解释的无效标记无关.
小智 5
仅当facebook扫描页面中的这些标记时才需要这些元标记.
<?
if(eregi("facebookexternalhit", $_SERVER['HTTP_USER_AGENT'])){
echo '<meta property="og:type" content=xxxxxxxxxxxxx';
// continue with the other open graph tags
}
?>
Run Code Online (Sandbox Code Playgroud)
只有当facebook需要它们时才会出现这些标签 - 这种方法使用PHP将其完全删除,以用于包括W3C验证在内的所有其他实例.
这里的许多答案已经过时了。请不要窥探标题或通过 JavaScript 编写(因为处理器可能不会评估 JS)。
W3C 建议(HTML5 的扩展)称为 RDFa 1.1 和 RDFa Lite 1.1(参见http://www.w3.org/TR/rdfa-lite/和http://www.w3.org/TR/rdfa-primer/ ) 使“属性”属性有效且符合要求。与此同时(因为这里有较旧的答案)验证器http://validator.w3.org/check将属性识别为有效。此外,开放图谱协议文档http://ogp.me/已更新以反映 RDFa 1.1(它使用“前缀”属性)。
W3C 的工作是在 OpenGraph 和 schema.org 等人的意见下完成的,以解决这个问题引发的问题。
简而言之,确保您的 OG 标签符合 RDFa 并且您是金子。