Javascript 如何确定饼干是否已经存在?
所以我做了一些简单的JS函数,比如Javascript 如何确定饼干是否已经存在?,javascript,html,cookies,Javascript,Html,Cookies,所以我做了一些简单的JS函数,比如 function writeCookie() { var the_cookie = "users_resolution="+ screen.width +"x"+ screen.height; document.cookie=the_cookie } tm如何确保用户的分辨率已设置?如果您这样做 var cookies = document.cookie; 然后字符串cookies将包含一个以分号分隔的cookie名称-值对列表。您可以拆分
function writeCookie()
{
var the_cookie = "users_resolution="+ screen.width +"x"+ screen.height;
document.cookie=the_cookie
}
tm如何确保用户的分辨率已设置?如果您这样做
var cookies = document.cookie;
然后字符串
cookies
将包含一个以分号分隔的cookie名称-值对列表。您可以拆分“;”
上的字符串并循环搜索结果,检查cookie名称是否存在。您可能需要使用索引检查它是否存在:
if(document.cookie.indexOf('users_resolution=') > 0){
// cookie was set
}
您可以编写如下函数:
function getCookie(cName) {
var cVal = document.cookie.match('(?:^|;) ?' + cName + '=([^;]*)(?:;|$)');
if (!cVal) {
return "";
} else {
return cVal[1];
}
}
然后,在设置cookie之后,可以调用getCookie()
并测试其返回值,如果它等于空字符串,或者“
,即false
,则cookie不存在。否则,您将获得一个有效的cookie值
上述代码段:
var cookie = getCookie("users_resolution");
if (!cookie) {
// cookie doesn't exist
} else {
// cookie exists
}
我知道您没有将其标记为jQuery,但我做了一个标记,这是读取cookie值的代码段:
/**
* RegExp Breakdown:
* search from the beginning or last semicolon: (^|;)
* skip variable number of spaces (escape backslash in string): \\s*
* find the name of the cookie: name
* skip spaces around equals sign: \\s*=\\s*
* select all non-semicolon characters: ([^;]*)
* select next semicolon or end of string: (;|$)
*/
var regex = new RegExp( '(^|;)\\s*'+name+'\\s*=\\s*([^;]*)(;|$)' );
var m = document.cookie.match( regex );
// if there was a match, match[2] is the value
// otherwise the cookie is null ?undefined?
val = m ? m[2] : null;
在当前页或后续页中?在当前页中。但是后面的页面也是一个有趣的地方。如果有一个cookie的名称是admin\u users\u resolution
?如果cookie以“users\u resolution”开头,这将不起作用。如果cookie以您要查找的相同字符串开头,AsindexOf
将获得“0”。所以,请更新您的答案。谢谢