>  기사  >  웹 프론트엔드  >  JavaScript 연산 쿠키 메소드 함수 모음

JavaScript 연산 쿠키 메소드 함수 모음

PHP中文网
PHP中文网원래의
2016-05-16 18:23:401367검색

질문:
페이지에 접속할 때 마지막 설정을 유지하거나 다른 페이지 간에 데이터를 공유할 수 있습니다. 예를 들어, 사용자가 웹 사이트를 방문할 때 페이지의 글꼴 크기를 설정하면 다음 번에 해당 웹 사이트를 방문할 때 다시 설정할 필요 없이 동일한 설정을 사용하여 탐색할 수 있기를 바랍니다.
해결책:
사용자가 페이지를 탐색하고 설정을 할 때 이러한 설정을 쿠키에 저장하고 다음에 방문할 때 쿠키의 설정을 읽으십시오.
다음 스크립트를 참고하세요.

// utility function to retrieve an expiration data in proper format; 
function getExpDate(days, hours, minutes) 
{ 
var expDate = new 
Date(); 
if(typeof(days) == "number" && typeof(hours) == "number" 
&& typeof(hours) == "number") 
{ 
expDate.setDate(expDate.getDate() + parseInt(days)); 
expDate.setHours(expDate.getHours() + parseInt(hours)); 
expDate.setMinutes(expDate.getMinutes() + parseInt(minutes)); 
return 
expDate.toGMTString(); 
} 
} 
//utility function called by getCookie() 
function getCookieVal(offset) 
{ 
var endstr = 
document.cookie.indexOf(";", offset); 
if(endstr == -1) 
{ 
endstr = 
document.cookie.length; 
} 
return 
unescape(document.cookie.substring(offset, endstr)); 
} 
// primary 
function to retrieve cookie by name 
function getCookie(name) 
{ 
var 
arg = name + "="; 
var alen = arg.length; 
var clen = 
document.cookie.length; 
var i = 0; 
while(i < clen) 
{ 
var j = 
i + alen; 
if (document.cookie.substring(i, j) == arg) 
{ 
return 
getCookieVal(j); 
} 
i = document.cookie.indexOf(" ", i) + 1; 
if(i == 
0) break; 
} 
return; 
} 
// store cookie value with optional 
details as needed 
function setCookie(name, value, expires, path, domain, 
secure) 
{ 
document.cookie = name + "=" + escape(value) + 
((expires) 
? "; expires=" + expires : "") + 
((path) ? "; path=" + path : "") + 
((domain) ? "; domain=" + domain : "") + 
((secure) ? "; secure" : ""); 
} 
// remove the cookie by setting ancient expiration date 
function 
deleteCookie(name,path,domain) 
{ 
if(getCookie(name)) 
{ 
document.cookie = name + "=" + 
((path) ? "; path=" + path : "") + 
((domain) ? "; domain=" + domain : "") + 
"; expires=Thu, 01-Jan-70 
00:00:01 GMT"; 
} 
}

getCookie(name) 함수를 사용하여 쿠키에 저장된 값을 읽어옵니다. 매개변수 이름은 쿠키 항목의 이름입니다. 쿠키 항목이 없으면 빈 문자열이 반환됩니다.
setCookie() 함수를 사용하여 쿠키 항목의 값을 저장합니다. 여기서 첫 번째와 두 번째 매개변수는 각각 쿠키 항목의 이름과 값입니다. 만료 시간을 설정하려면 세 번째 매개변수를 설정해야 합니다. 여기서 getExpDate()를 통해 올바른 형식의 매개변수를 가져와야 합니다.
마지막으로 deleteCookie()를 사용하여 기본적으로 항목이 만료되도록 하여 기존 쿠키 항목을 삭제합니다.
쿠키는 클라이언트 측에 데이터를 저장합니다. 페이지의 스크립트는 도메인과 서버의 쿠키 값만 읽을 수 있습니다. 도메인에 여러 개의 서버가 있는 경우 다섯 번째 매개변수를 설정하여 서버를 지정해야 합니다. 브라우저의 용량은 일반적으로 서버당 20개의 이름/값 쌍으로 제한되며, 각 쿠키 항목은 4,000자를 초과해서는 안 됩니다. 보다 현실적으로는 단일 쿠키 항목이 2,000자 미만이어야 합니다. 이는 대용량 저장을 위해 쿠키를 사용하지 않음을 의미합니다. 클라이언트의 용량 데이터.
브라우저마다 쿠키를 저장하는 방식이 다릅니다. IE는 각 도메인의 쿠키에 대해 텍스트 파일을 생성하는 반면 Netscape는 모든 쿠키를 동일한 텍스트 파일에 저장합니다.
참고: 쿠키는 클라이언트 측에 저장되므로 브라우저 설정의 영향을 받습니다. 예를 들어 사용자는 쿠키를 비활성화할 수 있습니다. 브라우저가 쿠키를 지원하는지 확인하려면 navigator.cookieEnabled 속성을 사용하세요.

<script> 
//写cookies函数 作者:翟振凯 
function 
SetCookie(name,value)//两个参数,一个是cookie的名子,一个是值 
{ 
var Days = 30; //此 
cookie 将被保存 30 天 
var exp = new Date(); //new Date("December 31, 9998"); 
exp.setTime(exp.getTime() + Days*24*60*60*1000); 
document.cookie = name 
+ "="+ escape (value) + ";expires=" + exp.toGMTString(); 
} 
function 
getCookie(name)//取cookies函数 
{ 
var arr = document.cookie.match(new 
RegExp("(^| )"+name+"=([^;]*)(;|$)")); 
if(arr != null) return 
unescape(arr[2]); return null; 
} 
function delCookie(name)//删除cookie 
{ 
var exp = new Date(); 
exp.setTime(exp.getTime() - 1); 
var 
cval=getCookie(name); 
if(cval!=null) document.cookie= name + 
"="+cval+";expires="+exp.toGMTString(); 
} 
SetCookie ("xiaoqi", "3") 
alert(getCookie(&#39;xiaoqi&#39;)); 
</script>

쿠키를 읽고 쓸 수 있는 매우 실용적인 자바스크립트 함수

function GetCookieVal(offset) 
//获得Cookie解码后的值 
{ 
var endstr = 
documents.cookie.indexOf (";", offset); 
if (endstr == -1) 
endstr = 
documents.cookie.length; 
return unescape(documents.cookie.substring(offset, 
endstr)); 
} 
function SetCookie(name, value) 
//设定Cookie值 
{ 
var expdate = new Date(); 
var argv = SetCookie.arguments; 
var argc = 
SetCookie.arguments.length; 
var expires = (argc > 2) ? argv[2] : null; 
var path = (argc > 3) ? argv[3] : null; 
var domain = (argc > 4) ? 
argv[4] : null; 
var secure = (argc > 5) ? argv[5] : false; 
if(expires!=null) expdate.setTime(expdate.getTime() + ( expires * 1000 )); 
documents.cookie = name + "=" + escape (value) +((expires == null) ? "" : 
("; expires="+ expdate.toGMTString())) 
+((path == null) ? "" : ("; path=" + 
path)) +((domain == null) ? "" : ("; domain=" + domain)) 
+((secure == true) 
? "; secure" : ""); 
} 
function DelCookie(name) 
//删除Cookie 
{ 
var exp = new Date(); 
exp.setTime (exp.getTime() - 1); 
var cval = 
GetCookie (name); 
documents.cookie = name + "=" + cval + "; expires="+ 
exp.toGMTString(); 
} 
function GetCookie(name) 
//获得Cookie的原始值 
{ 
var arg = name + "="; 
var alen = arg.length; 
var clen = 
documents.cookie.length; 
var i = 0; 
while (i < clen) 
{ 
var j 
= i + alen; 
if (documents.cookie.substring(i, j) == arg) 
return 
GetCookieVal (j); 
i = documents.cookie.indexOf(" ", i) + 1; 
if (i == 0) 
break; 
} 
return null; 
} 

<SCRIPT language="javascript"> 
<!-- 
function openpopup(){ 
url="popup.htm" 
window.open("gonggao.htm","gonggao","width=260,height=212,left=200,top=0") 
} 
function get_cookie(Name) { 
var search = Name + "=" 
var 
returnvalue = ""; 
if (documents.cookie.length > 0) { 
offset = 
documents.cookie.indexOf(search) 
if (offset != -1) { 
offset += 
search.length 
end = documents.cookie.indexOf(";", offset); 
if (end == 
-1) 
end = documents.cookie.length; 
returnvalue=unescape(documents.cookie.substring(offset, end)) 
} 
} 
return returnvalue; 
} 
function helpor_net(){ 
if 
(get_cookie(&#39;popped&#39;)==&#39;&#39;){ 
openpopup() 
documents.cookie="popped=yes" 
} 
} 
helpor_net() 
//--> 
</SCRIPT>

확인을 클릭하면 쿠키를 모르는 한 다시 메시지가 표시되지 않습니다. 향후 방문을 위해 확인을 클릭하지 않으면 매번 메시지가 표시됩니다. js 파일에 저장하면 전체 사이트에

<SCRIPT LANGUAGE="JavaScript"> 
<!-- 
var the_cookie = 
document.cookie; 
var broken_cookie = the_cookie.split(":"); 
var 
the_visiteraccepted = unescape(broken_cookie[1]); 
// 
if 
(the_visiteraccepted=="undefined"){ 
var tmp=confirm(&#39;中国人何时何地。&#39;); 
if(tmp==false){ 
window.close(); 
}else{ 
var the_visiteraccepted = 
1; 
var the_cookie = "ILoveChina=visiteraccepted:" + 
escape(the_visiteraccepted); 
document.cookie = the_cookie; 
} 
} 
//--> 
</SCRIPT>

1. 쿠키 호환성 문제
쿠키 형식에는 2가지 버전이 있으며 첫 번째 버전을 쿠키 버전이라고 합니다. 0은 원래 Netscape에서 개발되었으며 거의 ​​모든 브라우저에서 지원됩니다. 최신 버전인 쿠키 버전 1은 RFC를 기반으로 합니다. 2109 문서. 호환성을 보장하기 위해 JAVA는 위에서 언급한 쿠키와 관련된 작업이 이전 버전의 쿠키에 대해 수행되도록 규정하고 있습니다. 새 버전의 쿠키는 현재 Javax.servlet.http.Cookie 패키지에서 지원되지 않습니다.
2. 쿠키 콘텐츠
동일한 쿠키 콘텐츠의 글자 수 제한은 쿠키 버전마다 다릅니다. 쿠키 버전 0부터는 공백, 대괄호, 괄호, 등호(=), 쉼표, 큰따옴표, 슬래시, 물음표, @ 기호, 콜론, 세미콜론 등 일부 특수 문자를 쿠키 콘텐츠로 사용할 수 없습니다. 이것이 바로 예제에서 쿠키 콘텐츠를 "Test_Content"로 설정한 이유입니다.
쿠키 버전이지만 1 규정에서는 제한 사항이 완화되어 이러한 문자를 사용할 수 있지만 새 버전의 쿠키 사양은 여전히 ​​모든 브라우저에서 지원되지 않는다는 점을 고려하여 안전을 위해 다음의 콘텐츠에서는 이러한 문자를 사용하지 않도록 노력해야 합니다. 쿠키

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.