【发布时间】:2013-04-29 09:41:43
【问题描述】:
我不熟悉通过 javascript 设置 cookie 值,我对这两者的了解都很基础 - 尽管我对调整 JQuery 感到满意。
总之,我在一个网站上工作,该网站必须依法显示 cookie 政策。
我们有一个第三方解决方案会弹出一个 jquery 控制的 div 容器,其中包含一条消息和几个按钮:“稍后提醒我”和“设置”。如果用户点击设置,他们可以“保存并关闭”或更改安全级别,弹出窗口将消失。
我们已经调整了这个第三方解决方案并添加了一个“接受”按钮,用户只需确认“默认”cookie 设置并继续使用该网站。
到目前为止一切顺利!
我们知道这个第三方解决方案正在写入具有以下基本值的 cookie:
Cookie 名称:wsjnudge_javascript:jQuery_ws.jpecrJs.display(jQuery.ws.jpecrJs())_= true;
如果此值设置为true,则提示更改 cookie 设置的弹出消息将不会再次显示,直到 cookie 过期。
问题是 cookie 名称中有一个冒号(:),当我们通过 javacript 解析 cookiename 时,它会创建一个名称为:的 cookie:
wsjnudge_javascript%253AjQuery_ws.jpecrJs.display(jQuery.ws.jpecrJs())_
所以冒号 ( : ) 被替换为 %253A
我们已经编写了一些 Jquery / javascript 代码来设置这个 cookie 的值并尝试对冒号进行编码:
首先通过设置一个变量:
var acceptCookieEncode = encodeURIComponent
("wsjnudge_javascript:jQuery_ws.jpecrJs.display(jQuery.ws.jpecrJs())_");
然后通过点击功能写入cookie并关闭弹出窗口:
jQuery(document).on('click','.continue',function(){
jQuery.cookie( acceptCookieEncode, 'true', { expires: 365 });
jQuery('#wsjnudge').remove();
所以,总而言之,关闭函数正在工作,但由于冒号,cookie 名称不正确,所以实际上我们正在创建并将值设置为错误的 cookie 名称..
我知道我可能必须使用 base64,但我完全不知道如何实现它,显然我没有正确使用 encodeURIcomponent 来正确解析 URI。
如果此消息的格式不正确,我深表歉意。第一次发帖,但 StackOverflow 的老用户,在此先感谢您的帮助。
丹。
【问题讨论】:
标签: javascript jquery cookies jquery-cookie setcookie