2012-07-21 59 views
0

我使用下面的javascript函数将Facebook元数据移动到头部,这对于访问者来说很好,但是当FB抓取页面时没有,我如何在Facebook抓取页面时执行此操作?当Facebook抓取网站时执行Javascript

function metaBodyToHead() { 

    var head = document.head, 
     metaTAGs = document.getElementsByTagName("DIV"); 

    for(var i = 0, ln = metaTAGs.length; i < ln; i++) { 

     head.appendChild(metaTAGs[ i ].parentNode.removeChild(metaTAGs[ i ])); 
    } 
} 

metaBodyToHead(); 

我需要在头部的元数据当Facebook抓取网页

测试页:http://greenboxmedia.org/meta.html

Facebook的调试:https://developers.facebook.com/tools/debug/og/object?q=www.greenboxmedia.org%2Fmeta.html

+1

有没有什么可以防止你只是在头部输出他们? – complex857 2012-07-21 12:27:18

+0

这是他在几个小时前问过的问题的一部分,http://facebook.stackoverflow.com/questions/11590553/move-code-generated-in-body-to-head – CBroe 2012-07-21 12:30:32

+0

生成Facebook bot的元数据只是可能与服务器端代码。看看这里:http://stackoverflow.com/questions/8431694/dynamic-generation-of-facebook-open-graph-meta-tags顺便说一句,你可以检测Facebook用户或Facebook机器人是否访问您的网站。 – borisdiakur 2012-07-21 13:29:39

回答

3

我怎么能执行此当Facebook抓取页面?

当然没有

Facebook的刮板只是看你的页面的HTML代码;它不是一个完整的“浏览器”,它可以执行任何客户端代码。

您必须将您的OG元数据放入请求URL时获取的HTML代码中。这就是它的工作原理。