【问题标题】:Google Plus One button on loadGoogle Plus 一键加载
【发布时间】:2013-03-17 22:30:37
【问题描述】:

当点击加一按钮时,我使用了谷歌加一按钮上的回调属性来执行一个动作。这工作正常。我的问题是,当我单击加一按钮然后关闭页面并返回时,仍然单击该按钮(红色),但未执行我的自定义操作。有没有办法查看是否有人在之前的访问中点击了加号按钮?我想查看按钮的状态,而不需要用户在按钮上进行交互。我的代码如下

<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 将再次隐藏。有人有什么想法吗?

谢谢

【问题讨论】:

  • 我认为当你回来时按钮变红是预期的行为。也许您可以嗅探应用到该按钮的 CSS?
  • 是的,红色的按钮是预期的。我想知道页面加载时是否无法获取按钮的状态。状态是开还是关,在回调函数中给出

标签: javascript html google-plus google-plus-one


【解决方案1】:

您可以从您的网站跟踪按钮的状态。唯一的缺点是当用户返回您的页面时,按钮的外部点击不会注册。

为回调添加一个处理程序,以便在单击按钮时设置 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+ buttons policy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    相关资源
    最近更新 更多