插入Schema.org属性:JQuery或DOMDocument


Insert Schema.org properties: JQuery or DOMDocument?

My Wordpress插件将模式属性插入到页面的源代码中。到目前为止,我使用DOMDocument来实现这一点。

$imgs = $doc->getElementsByTagName('img');
foreach ($imgs as $img) {
    $img->setAttribute('itemprop', 'image');
}

由于我已经在同一个插件中使用了JQuery,所以我想用这个函数替换这个函数。

$('img').attr('itemprop', 'image');

我更喜欢JQuery的原因是:我注意到无效的HTML语法会破坏DOMDocument方法。由于我不能指望插件的其他用户只使用有效的HTML,我禁用了该函数的错误报告。我觉得这样做不舒服,JQuery函数似乎工作得更优雅(在我看来!)此外,我还没有找到将属性以这种方式插入body标记的方法,我只能将属性添加到body中的标记中(我想知道你是怎么做到的!)

然而,JQuery函数有一个缺点,这将最终导致我的问题。我注意到插入的属性不会显示在Firefox或Chrome的源代码视图中。这可能是因为JQuery会在页面呈现后插入这些内容。我可以在Firebug和Chrome检查器中看到项目属性。

现在。

我不太了解爬虫是如何工作的,如果它们会/可以执行Javascript的话。如果他们不这样做,那么使用JQuery就没有意义了。

你觉得怎么样,什么更好

通过使用富代码片段测试工具,您将确切地知道爬网程序看到了什么:http://www.google.com/webmasters/tools/richsnippets

爬网程序不会读取jQuery插入的元数据。您需要在发送http响应之前添加此内容。

DOMDocument中断可能可以通过指定正确的doctype来修复。无论如何,渲染后的javascript解决方案都是不够的,因为元数据对搜索引擎是不可见的。