6

当我将以下代码放在我的网站上以获得一个不错的标准 +1

<!-- Place this tag where you want the +1 button to render. -->
<div class="g-plusone"></div>

<!-- Place this tag after the last +1 button tag. -->
<script type="text/javascript">
  window.___gcfg = {lang: 'nl'};

  (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>

它做了我不想要的事情。

如果没有此代码,我只有自己的 phpsessid 需要让我的网站正常运行。

使用此代码,以下 cookie 将从域 plusone.google.com 中删除

Google Plus 一会掉很多饼干!

现在,当查看到期日期时,在 2014 年、2022 年、2013 年的某个地方……他们会活得很长很长。

关键是,如何通过 google+1 按钮禁用 cookie 放置的文档无处可取,我已尽力查看,甚至阅读了很多堆栈溢出帖子,希望找到相关的内容。

然而,我确实找到了如何在我的任务中禁用用于分析的 cookie(万岁!)但现在我需要找到一种方法、javascript 选项或其他东西来告诉 plusone 不要丢弃 cookie(荷兰万岁/欧洲 cookielaw)

问题: 有没有人遇到过告诉 +1 按钮不要丢弃 cookie 的文档/选项?

4

3 回答 3

1

似乎欧盟 cookie 法比乍一看要笨拙得多:\

似乎没有办法阻止 Google 的 +1 按钮设置的 cookie。用户可能会在他们的偏好中阻止第三方 cookie,但作为站点开发人员,不能表明您的特定站点不允许来自第三方的 cookie,并且实际的 cookie 设置在不同的域中,因此您的 Javascript 也不会干扰。

该指令允许您保留必要的cookie,因此您可以存储 cookie 以记录访问者接受或拒绝 cookie。如果未设置该 cookie,您可以请求一次许可。只有当访问者允许您跟踪第三方 cookie或者您已经在 cookie 中记录了他们的许可时,您才应该继续初始化 +1 按钮;否则您应该跳过 +1 按钮初始化代码。

粗略的不完整示例(省略了实际的 cookie 操作):

(function() {
    var allowed = getCookie('allowCookies');
    if (allowed === undefined) {
        allowed = confirm('Allow cookies?');
        setCookie('allowCookies', allowed? 1: 0);
    }
    if (allowed) {
        // initialize +1 buttons:
        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);

        // initialize any other third-party tools that might set cookies ...
    }
})();
于 2012-10-27T08:07:19.323 回答
0

我编写了一个基于权限的解决方法,但我仍然觉得它远非理想,因为我必须在用户点击时让他们获得权限,但总比没有好。

我仍然需要一种方法来阻止谷歌丢弃不需要的 cookie。在我看来,没有必要用这么多 cookie 或任何 cookie 来跟踪用户。

此代码使用户单击该链接,当他们单击该链接时,系统会询问他们是否要显示该按钮以及该决定的后果是什么。

我的示例代码:http: //jsfiddle.net/CADjN/3/

现场演示 https://www.ortho.nl/orthomoleculaire-bibliotheek/artikel/8091/Langer-leven-met-vitamine-D

<script type="text/javascript"> 
// Function to set the cookie plusone.
function setCookie()
    {
    domain = "www.mysite.com";
    c_name="plusone";
    value="yes";
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + 365);
    var c_value=escape(value) + "; expires="+exdate.toUTCString()+';domain='+domain+';path=/';
    document.cookie=c_name + "=" + c_value;
    }
// Function to see if our plusone cookie exists and has value yes
// Returns true when the cookie is set, false if isn't set.
function getCookie()
    {
    var i,x,y,ARRcookies=document.cookie.split(";");
    for (i=0;i<ARRcookies.length;i++)
        {
        x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
        y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
        x=x.replace(/^\s+|\s+$/g,"");

        if (x.indexOf("plusone") != -1)
            {
        if(unescape(y)=="yes")
        {
        return true;
        }
    else
        {
        return false;
        }
        }
    }
}
// Load the plusone module but first ask permission
function loadplusone(thelink) 
    {   
    // Cookie hasn't been set
    if(!getCookie())
        {
            // Get permission
        if(window.confirm("If you wish to 'plusone' this page we need to load a special button from Google.com.\n\nWith this button Google will place some cookies on your computer. Google uses these cookies for statistics and maintaing your login status if you have logged in with Google.\n\nDo you consent to loading the button and the placement of cookies by Google?\n\nIf you agree this website will place a cookie with a year lifetime on your computer to remember this and the plusone button will be loaded on every page where the plusone button is present on this site."))
            {
                    // set cookie, load button
            setCookie();
            var jsnode = document.createElement('script');   
            jsnode.setAttribute('type','text/javascript');   
            jsnode.setAttribute('src','https://apis.google.com/js/plusone.js');   
            document.getElementsByTagName('head')[0].appendChild(jsnode);   
            document.getElementById(thelink).innerHTML = ''; 
            }
        }
    // cookie has already been set, just load button.
    else
        {
        var jsnode = document.createElement('script');   
        jsnode.setAttribute('type','text/javascript');   
        jsnode.setAttribute('src','https://apis.google.com/js/plusone.js');   
        document.getElementsByTagName('head')[0].appendChild(jsnode);   
        document.getElementById(thelink).innerHTML = ''; 
        }
    }
    </script>
    <!-- Where the plusone button should go this piece of code should be placed -->
    <a id="plus1" href="javascript:loadplusone('plus1')">Show Google +1</a><g:plusone></g:plusone>
    <!-- This should be placed below the above code or in the onload event of the document -->
    <script type="text/javascript">
    if(getCookie())
        {
        var jsnode = document.createElement('script');   
        jsnode.setAttribute('type','text/javascript');   
        jsnode.setAttribute('src','https://apis.google.com/js/plusone.js');   
        document.getElementsByTagName('head')[0].appendChild(jsnode);   
        document.getElementById('plus1').innerHTML = ''; 
        }
    </script>
于 2012-10-22T10:21:32.117 回答
0

我不喜欢社交分享按钮的一件事是有 javascript 操作和浪费速度

所以几乎每次我使用静态按钮时 ,你也应该使用静态按钮

否则:解决此问题的方法是在页面加载后取消设置 Cookie

使用 onLoad() 并取消设置

你怎么看?

于 2012-10-29T06:41:08.600 回答