我有cookie代码无法正常工作但不知道问题是什么。这段代码在另一个脚本中工作但不在其中。
CODE:
function get_cookie(Name) {
var search = Name + "=";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
// cookie exist, update expiry date of the same cookie
if (offset != -1) {
cookie_info = document.cookie.split('=');
cookie_info = cookie_info[0]+"=" + cookie_info[1];
// add 30 days expiry
var date = new Date();
date.setTime(date.getTime()+(30*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
cookie_info += expires + ";path=/";
document.cookie = cookie_info;
}
}}
function loadCokie() {
if (get_cookie('popup')=='') {
alert("hello");
document.cookie="popup=yes"
}
}
提前THnx
答案 0 :(得分:1)
只是一个建议,但你可以这样做:
if ( ! localStorage.getItem('visited')) {
localStorage.setItem('visited', true);
alert('Hello, new visitor !');
}
如果您必须支持旧版浏览器,则可以添加自动回复到Cookie的 MDN 的polyfill。
修改强>
至于你的原始代码,你永远不会执行任何函数,如果cookie不存在,它就不会返回一个空字符串,所以逻辑有缺陷,我改了一点:
function get_cookie(c_name) {
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if (c_start == -1) {
c_start = c_value.indexOf(c_name + "=");
}
if (c_start == -1) {
c_value = null;
}else{
c_start = c_value.indexOf("=", c_start) + 1;
var c_end = c_value.indexOf(";", c_start);
if (c_end == -1) {
c_end = c_value.length;
}
c_value = unescape(c_value.substring(c_start,c_end));
}
return c_value;
}
function set_cookie(c_name,value,exdays) {
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
function loadCokie() {
if ( ! get_cookie('popup')) {
alert("hello");
set_cookie('popup', 'yes', 30);
}
}
loadCokie();