0

Facebookのコメントで私たちのウェブサイトに奇妙な問題があります。Facebookスクレーパーが(少なくとも1つの)Webページを誤って解析しているため、コメントをモデレートするために管理者をピックアップしていないようです。

このリンクにアクセスすると、次のようになります。

http://www.beliefnet.com/Espanol/10-Atletas-olimpicos-mas-inspiradores.aspx

ソースを表示すると、fb:adminsのタグを含め、ヘッドに適切なタグがあることがわかります。そのアカウントでFacebookにログインしている場合、モデレーターオプションはありません。

Facebookオブジェクトデバッガーを介してページを実行すると、本文にメタタグがあるというエラーが表示されます。具体的には、このエラー:

Meta Tags In Body:  You have tags ouside of your . This is either because 
your was malformed and they fell lower in the parse tree, or you accidentally
put your Open Graph tags in the wrong place. Either way you need to fix it 
before the tags are usable.

そのページの下部にあるスクレイプされたURLを見ると、FacebookがHTMLを「再編成」し、メタタグを頭から本文に配置したように見えます。

誰かがこれを引き起こしているものを知っていますか?ページのどこかに不正な形式のhtmlがあり、すべてが失われているのではないかと思いましたが、そのページのhtmlを調べたところ、見栄えがしました。私がここで見逃している他の何かがありますか?

4

2 に答える 2

1

validator.w3.orgを介してURLを実行すると、いくつかの警告サインが表示されます。

Line 77, Column 14: document type does not allow element "noscript" here; assuming missing "object" start-tag
Line 154, Column 699: document type does not allow element "meta" here

私はあなたのページのこれらの行に(潜在的な)問題を絞り込むことができました:

document.write('<a href="' + OAS.config.url + 'click_nx.ads/' + OAS.config.sitepage + '/1' + OAS.config.rns + '@' + OAS.config.listpos + '!' + pos + '?' + OAS.config.query + '" target=' + OAS.config.target + '>');
document.write('<img src="' + OAS.config.url + 'adstream_nx.ads/' + OAS.config.sitepage + '/1' + OAS.config.rns + '@' + OAS.config.listpos + '!' + pos + '?' + OAS.config.query + '" border=\"0\" /></a>');

これらのdocument.write()行もw3.orgバリデーターに失敗しています。

Line 53, Column 197: character "+" is not allowed in the value of attribute "target"

さらに、DOMの挿入にdocument.write()を使用するのは悪いことだと思います(そして、ページのレンダリングがブロックされる可能性があるためです)。jsオブジェクトとDOM操作の使用に変更できますか?

FBはURLをフェッチした後、それらのdocument.write()行に遭遇したときにおそらくチョークしているDOMパーサーを介してURLを実行します。これらの行に2つのdocument.writes()にまたがる<a>要素があるという事実は、おそらくパーサーを混乱させます。そして、パーサーはおそらくページの<body>に到達したと考えているため、「Metatagsinbody」エラーが発生します。

簡単なテストとして、これらのdocument.write()行の上にfb:adminsメタタグを配置してみてください。ただし、パーサーがまだチョークしていても驚かないでしょうが、試してみる価値はあります。

ページのhtmlソースをテストするために、このphp.netページの最後にあるコメントで提供されている簡単なスクリプトを使用しました: http ://www.php.net/manual/en/class.domxpath.php

エラーが発生しました:

Unexpected end tag : a in /home/dlee/tmp/tmp.html, line: 54
Unexpected end tag : head in /home/dlee/tmp/tmp.html, line: 183
htmlParseStartTag: misplaced <body> tag in /home/dlee/tmp/tmp.html, line: 184

ここで、tmp.htmlは、ファイルに保存されたページのhtmlでした。54行目は前述のdocument.write()行です。

上記のいずれかの結果が進行中であるかどうかをお知らせください。それに応じてこの回答を編集します。

于 2012-08-07T22:36:31.550 に答える
1

そのため、最終的に問題と<noscript>...</noscript>なったのは、ヘッドにネストがあり、使用する広告サービスの一部として、JavaScriptが有効になっていないブラウザのトラッキングピクセルを含めようとしていたことです。

この問題は、Facebookが「あなたのページをどのように見るか」について私たちに提供した出力を見ると明らかだったはずです。本文はスクリプトの直後から始まりますが、タグが始まる直前です。どうやらFacebookパーサーは、体の中にあるはずの頭の要素を見るとびっくりするので、すぐにそこから体を開始します。

...Facebookの出力..。

        console.log(OAS);
    })();
</script><!-- End OAS Setup --><!-- Begin comScore Tag --><script>
      var _comscore = _comscore || [];
      _comscore.push({ c1: "2", c2: "8428430" });
      (function() {
        var s = document.createElement("script"), el = document.getElementsByTagName("script")[0]; s.async = true;
        s.src = (document.location.protocol == "https:" ? "https://sb" : "http://b") + ".scorecardresearch.com/beacon.js";
        el.parentNode.insertBefore(s, el);
      })();
    </script>
</head>
<body>
<noscript>

    </noscript>
    <!-- End comScore Tag -->

...私たちのhtml..。

<head>   
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

    <asp:PlaceHolder id="OASHeader" runat="server" />

    <!-- Begin comScore Tag -->
    <script type="text/javascript">
      var _comscore = _comscore || [];
      _comscore.push({ c1: "2", c2: "8428430" });
      (function() {
        var s = document.createElement("script"), el = document.getElementsByTagName("script")[0]; s.async = true;
        s.src = (document.location.protocol == "https:" ? "https://sb" : "http://b") + ".scorecardresearch.com/beacon.js";
        el.parentNode.insertBefore(s, el);
      })();
    </script>    
    <!-- End comScore Tag -->
    <noscript>
        <img src="http://b.scorecardresearch.com/p?c1=2&c2=8428430&cv=2.0&cj=1" alt="" />
    </noscript>

    <script type="text/javascript">
    ....
    <body>
    ....

したがって、将来的には、無効なヘッド要素が間違いなくこの問題を引き起こしている可能性があります。

于 2012-08-08T20:40:20.253 に答える