5

我正在设置一个 google+ 分享按钮,并想知道何时有人分享了链接,以便我可以执行操作。您可以使用该属性在共享按钮上注册回调onendinteraction,并且文档指出,只要关闭共享框和完成共享,就会调用此回调。

我的函数在窗口关闭时被调用,但不是在链接实际共享时被调用:

function redirectGooglePlus(jsonParam) {
    alert(jsonParam.type);
}
<div class="g-plus" data-action="share" data-annotation="vertical-bubble" data-height="60"
                 data-href="http://mywebsite.com" data-onendinteraction="redirectGooglePlus"></div>

我的函数redirectGooglePlus只在hover类型时被调用,并且从不confirm(这是应该表示共享已完成的那个。

有谁知道为什么不调用该函数confirm

仅供参考,谷歌共享文档在这里: https ://developers.google.com/+/web/share/

4

3 回答 3

1

所以这似乎是 google+ 分享按钮当前实现的一个错误:

https://code.google.com/p/google-plus-platform/issues/detail?id=396

我现在使用的(可怕onendinteraction的)解决方法是为. 如果事件连续发生(少于 1 秒),那么他们很可能已经共享了该项目。

于 2013-08-23T09:59:13.497 回答
0

这个很晚,所以它可能不相关,但根据他们的网络平台的谷歌开发者页面,你似乎可以使用类似于的javascript代码进入当前用户活动列表 -

var request = gapi.client.plus.activities.list({
  'userId' : 'me',
  'collection' : 'public'
});

request.execute(function(resp) {
  var numItems = resp.items.length;
  for (var i = 0; i < numItems; i++) {
    console.log('ID: ' + resp.items[i].id + ' Content: ' +
      resp.items[i].object.content);
  }
});

开发人员页面上有生成和测试查询端点的在线工具

生成自定义查询字符串并将其附加到用户正在共享的链接的末尾,可以解析从端点返回的 JSON 以检查该特定链接是否已在用户活动流中共享。返回的 JSON 如下所示 -

{
 "items": [
  {
   "title": "",
   "published": "2015-06-12T16:39:11.176Z",
   "url": "https://plus.google.com/+UserID/posts/PostID",
   "object": {
    "content": "",
    "attachments": [
     {
      "objectType": "article",
      "url": "http://www.example.com"
     }
    ]
   }
  }
 ]
}

如果返回项目之一的附件部分中有自定义查询的链接,瞧!它已被共享。

于 2015-06-12T19:07:45.430 回答
0

一个可能的解决方案是以下作为解决方法。

  1. 让用户打开一个新窗口,其中仅包含传递要共享的 url 的共享按钮代码
  2. 在窗口加载时将变量设置为 0
  3. 在调用 data-onendinteraction 时,在您的函数 redirectGooglePlus 中将变量更新为 1
  4. 检查窗口是否关闭并验证变量是否已设置

    function closeWin(){
    
     if(x==0){
        //not shared before leaving code;
     }else{
        //shared before window closed;
     }
    }    
    body onbeforeunload="closeWin()" 
    
于 2015-11-05T19:50:34.217 回答