我正在使用cookiebot来遵守GDPR,到目前为止,cookieBot脚本似乎没有按预期工作。所以我必须添加一些额外的功能来更好地控制页面内容,例如启用/禁用Embebed Youtube视频部分作为示例。
CookieBot以下列格式存储与cookie上的4种类型相关的信息,不确定这是否是正确的JSON格式?
{时间戳: 'HMzWoJn8V4ZkdRN1DduMHLhS3dKiDDr6VoXCjjeuDMO2w6V + n2CcOg ==',必要:真,偏好:真,统计:真,销售:假,VER:1}
并使用CookieConsent
作为Cookie的名称。
当用户使用addEventListener
document.addEventListener("click", function () {
console.log("document capture click");
readCookies();
}, true);
function readCookies() {
console.log("Ready to Read");
Cookies.get('CookieConsent')
//Parse the cookie to Object
cookieval = Cookies.get('CookieConsent');
console.log(cookieval);
console.log("Necessary: " + Boolean(cookieval.necessary));
console.log("Prefrences: " + Boolean(cookieval.preferences));
console.log("Statistics: " + Boolean(cookieval.statistics));
console.log("Marketing: " + Boolean(cookieval.marketing));
}
对我来说问题是所有值都返回false,我使用https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js
来读取cookie值,不确定为什么cookieval.marketing总是返回false,即使它在cookie中为true
输出
Ready to Read
{stamp:'HMzWoJn8V4ZkdRN1DduMHLhS3dKiDDr6VoXCjjeuDMO2w6V+n2CcOg==',necessary:true,preferences:true,statistics:true,marketing:false,ver:1}
Necessary: false
Prefrences: false
Statistics: false
Marketing: false
答案 0 :(得分:-1)
Cookies.get('CookieConsent');
将返回字符串。
如果要将JSON转换为JavaScript对象,则必须解析它。
NB:
{时间戳: 'HMzWoJn8V4ZkdRN1DduMHLhS3dKiDDr6VoXCjjeuDMO2w6V + n2CcOg ==',必要:真,偏好:真,统计:真,销售:假,VER:1}
...无效的JSON。
您还需要更改设置cookie的代码,以便生成有效的JSON。
答案 1 :(得分:-2)
您需要按如下方式解析类似json的字符串
var cookieStr = Cookies.get('CookieConsent'); //{stamp:'HMzWoJn8V4ZkdRN1DduMHLhS3dKiDDr6VoXCjjeuDMO2w6V+n2CcOg==',necessary:true,preferences:true,statistics:true,marketing:false,ver:1}
cookieStr = cookieStr.substr(1, cookieStr.length - 2); //Get rid of {} marks
var cookieArr = cookieStr.split(',') //Separate properties
var cookieObj = {}
cookieArr.forEach(function(item) {
cookieObj[item.split(':')[0]] = item.split(':')[1]; //Assemble new object
})
console.log("Necessary: " + cookieObj.necessary);