1

maexculture.tumblr.comは私のサイトです。

フェイスブックボタンをインストールしたばかりで、まずはいいねを確認するように求められます。確認して「いいね」を押すと、カウントに切り替わり、ゼロに戻ります。「送信」機能は機能します。ただし、「いいね」機能はありません。Facebookには何も表示されず、「いいね」はカウントされません。

これは私のページの上部にあるものです:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:fb="https://www.facebook.com/2008/fbml"
      xmlns:og="http://ogp.me/ns#"
      xml:lang="en"
      lang="en">

そして特定のボタン:

<div class="facebook-button">
    <div class="fb-like" data-href="{Permalink}" data-send="true"
         data-layout="button_count" data-width="450" 
         data-show-faces="true"></div>
</div>

ヘッドタグの近くにもこのコードがあります

<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s);
  js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=271140516272162";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

さらに情報が必要な場合はお知らせください。

4

1 に答える 1

1

カップルの問題:

コードが「ヘッドタグの近く」にある場合、実行時にDOMが完全に入力されていない可能性が高く、そのため、一部の要素の検出を見逃す可能性があります。既存のDOM要素にアクセスまたは操作するスクリプトは、それらの要素を作成するHTMLの後に(たとえば、直前に</body>)配置する必要があります。

fjs = d.getElementsByTagName(s)[0]ある特定のスクリプト要素がドキュメントの最初の要素であることに依存しているため、これは非常に脆弱です。そのスクリプトにIDを付けて、それを検索しますgetElementByID()

あなたのコメントに答えるために、私は(HTMLで)のようなものを意味します

<script id="fjs" type="text/javascript" src="..." </script>

(処理スクリプト内)

fjs=d.getElementByID('fjs');

つまり、特定の<script>要素がドキュメントの最初の要素であると見なすのではなく、idラベルを貼り付けて、どこにいても見つけられるようにします。

于 2012-09-11T11:27:40.147 に答える