当我将以下代码放在我的网站上以获得一个不错的标准+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才能使我的网站正常运行。
使用此代码,将从域plusone.google.com
中删除以下Cookie
现在,在查看2014年,2022年,2013年某个地方的到期日期......他们将会活很长时间。
重点是,文件随时可以访问如何通过谷歌+ 1按钮禁用cookie的放置,我已经尽力看,甚至阅读了很多堆栈溢出帖子,希望找到相关的东西。< / p> 然而,我确实在我的任务中找到how to disable cookies for analytics(欢呼!)但是现在我需要找到一种方法,javascript选项或者其他东西来告诉plusone不要丢弃cookie(长寿荷兰/欧洲cookielaw)
问题: 有没有人遇到过文档/选项告诉+1按钮不丢弃cookie?
答案 0 :(得分: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 ...
}
})();
答案 1 :(得分: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>
答案 2 :(得分:0)
我不喜欢社交分享按钮的一件事是有javascript操作&amp;浪费速度
所以几乎每次我使用静态按钮 所以你也应该使用静态
否则:解决此问题的方法是在加载页面后取消设置Cookie
使用onLoad()&amp;取消它
你在做什么?