10

以下の関数 (GWT) を使用して HTML メタタグを動的に作成しています。これを DOM に配置するのに 1 秒かかります。Facebook以外は正常に動作しています。Web からリンクを共有すると、スクレーパーは HTML にあるメタタグを取得します: なし。どうすればこれを修正できますか?

/**
* 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);
}

これは、DOM 上の結果の HEAD です。タイトルaaaaとメタディスクリプションが動的に読み込まれました。(ヒントをくれたCBroeに感謝します)。「ソースの表示」機能では、これらの動的タグは表示されません (開発者ツール - ビュー DOM のみ)。

<head>
    <title>aaaa</title>
    <meta content="text/html; charset=utf-8" http-equiv="content-type">
    <meta name="description" content="My description">

    <script language="javascript" type="text/javascript" src="dialective/dialective.nocache.js"></script><script defer="defer">dialective.onInjectionDone('dialective')</script>

</head>

元の HTML には、TITLE または META-DESCRIPTION タグがありません。

4

2 に答える 2

12

Facebook スクレイパーは<meta>、サーバーからの元の HTML 応答に含まれるタグのみを確認できます。JavaScript コード、Flash プラグイン、Java アプレット、または本格的なブラウザで実行できるその他のものを実行するには、「十分にスマート」ではありません。

<meta>サーバー側のフレームワークを使用して、サーバー上でこれらのタグを生成する必要があります。

また、Facebook は、ページが適切なメタ タグを公開していることを確認するための便利なテスト ツールを提供しています。や などの OpenGraph タグも追加する必要がある場合がありog:titleますog:description

于 2013-02-15T17:27:30.367 に答える
-2

なぜか上記の機能でメタディスクリプションが読み込めませんでした…

これは、新しい MetaElementを作成するだけで、それに対して何もしないためです。

その要素により具体的に、ドキュメントに追加する必要があります。head

何かのようなもの

getHead().appendChild(metaDesc)

不足している。

于 2013-02-15T16:27:58.483 に答える