Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Facebook没有';不加载动态元标记_Html_Facebook_Web Scraping_Meta Tags_Scraper - Fatal编程技术网

Html Facebook没有';不加载动态元标记

Html Facebook没有';不加载动态元标记,html,facebook,web-scraping,meta-tags,scraper,Html,Facebook,Web Scraping,Meta Tags,Scraper,我正在使用下面的函数(GWT)动态创建HTML元标记。需要1秒才能将其放到DOM上。除了Facebook,它工作正常。当我从我的网站共享一个链接时,scraper会得到HTML:none中的meta标记。我怎样才能解决这个问题 /** * Include the HTML attributes: title, description and keywords (meta tags) */ private void createHTMLheader(MyClass thing) { St

我正在使用下面的函数(GWT)动态创建HTML元标记。需要1秒才能将其放到DOM上。除了Facebook,它工作正常。当我从我的网站共享一个链接时,scraper会得到HTML:none中的meta标记。我怎样才能解决这个问题

/**
* Include the HTML attributes: title, description and keywords (meta tags)
*/
private void createHTMLheader(MyClass thing) {

    String title=thing.getTitle();
    String description=thing.getDescription();

    Document.get().setTitle(title);

    MetaElement metaDesc = Document.get().createMetaElement();
    metaDesc.setName("description");
    metaDesc.setContent(description);
    NodeList<Element> nodes = Document.get().getElementsByTagName("head");
    nodes.getItem(0).appendChild(metaDesc);
}
原始HTML没有标题或元描述标记

由于某些原因,元描述没有加载上述函数

这是因为您只创建了一个新元元素,但您对它什么也不做

您必须将其附加到文档中,更具体地说,附加到其
元素中

差不多

getHead().appendChild(metaDesc)

缺少。

Facebook scraper只能看到服务器原始HTML响应中包含的
标记。它“不够聪明”,无法运行任何JavaScript代码、Flash插件、Java小程序或其他成熟浏览器可能运行的任何东西

您需要使用服务器端框架在服务器上生成这些
标记


此外,Facebook还提供了一个方便的工具,确保您的页面公开适当的元标记。您可能还需要添加OpenGraph标记,例如
og:title
og:description

您能显示实际生成的HTML吗?谢谢。刚刚添加了一个问题:您是想用Java应用程序还是其他什么东西添加HTML标记?Facebook scraper不会运行您的Java代码。它将准确地看到您的web服务器正在发送的内容。下面的代码在客户端(GWT演示者)上运行。所以没有办法做到这一点?谢谢你。在服务器上生成元标记。嗨,Mike,你提到的关于Facebook刮板只看到原始HTML的观点是我发现的,因为我和OP有相同的问题。但是我想如果我在对DOM进行更改后使用$.getScript加载这个会怎么样。在我的理论中,FB的到来只是为了与新DOM擦肩而过。但这不可能吗?我担心当AddThis触发并单击FB共享时,URL会传递给FB&然后它会独立地抓取没有javascript编辑的元标记的共享URL。你对此有什么想法吗?丹尼尔。
getHead().appendChild(metaDesc)