0

Google のプラス 1 ボタンのコールバック属性を使用して、プラス 1 ボタンがクリックされたときにアクションを実行しました。これはうまくいきます。私の問題は、プラス 1 ボタンをクリックしてからページを閉じて戻ってきたときに、ボタンがまだクリックされている (赤色) が、カスタム アクションが実行されないことです。誰かが以前の訪問でプラス 1 ボタンを既にクリックしたかどうかを確認する方法はありますか? ボタンでのユーザー操作を必要とせずに、ボタンの状態を確認したい。私のコードは次のとおりです

<script type="text/javascript">
function customCallback(jsonParam) {
var Special = document.getElementById('special');

if(jsonParam.state == "on"){

     $('.test').show();
   }
   else{

       $('.test').hide();
        }
}
window.onload = customCallback;
</script>

次に、ボタンをレンダリングします

<g:plusone callback ="customCallback"></g:plusone>

ボタンをクリックすると、コードが期待どおりに実行され、.test div が表示されます。その後、ページに戻ると、.test div が再び非表示になります。誰でもアイデアはありますか?

ありがとう

4

1 に答える 1

0

サイトからボタンの状態を追跡できます。唯一の欠点は、ユーザーがページに戻ったときにボタンの外部クリックが登録されないことです。

ボタンがクリックされたときに Cookie を設定するコールバックのハンドラーを追加します。

<div class="g-plusone" data-callback="cookieAdd" data-annotation="inline" data-width="300"></div>

<script type="text/javascript">
  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
</script>
<script type=text/javascript>
function cookieAdd(args){
  if (args.state == "on"){
    document.cookie = 'enrolled=1;expires=0';
  }else{
    document.cookie = 'enrolled=0;expires=0';
  }
}
</script>

ページが読み込まれると、ユーザーがボタンをクリックしたかどうかを次のように確認できます。

  <script>
    if (document.cookie != undefined && document.cookie.indexOf('enrolled=1') > -1){
      // button has already been clicked "on"
    }
  </script>

これで何をしようとしているのかわかりませんが、Google+ ボタン ポリシーに違反していないか注意してください。

于 2013-03-30T17:02:43.723 に答える