Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何确定饼干是否已经存在?_Javascript_Html_Cookies - Fatal编程技术网

Javascript 如何确定饼干是否已经存在?

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名称-值对列表。您可以拆分

所以我做了一些简单的JS函数,比如

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以您要查找的相同字符串开头,As
indexOf
将获得“0”。所以,请更新您的答案。谢谢