日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对cookie和子cookie操作的封装

發(fā)布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对cookie和子cookie操作的封装 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1 /**2 * 封裝cookie的操作3 * @type {Object}4 */5 var CookieUtil = {6 /**7 * 根據(jù)cookie的名字獲取相應(yīng)的值8 * @param name cookie名字9 * @return {*}10 */11 get:function (name) {12 //對name進(jìn)行URL編碼13 var cookieName = encodeURIComponent(name) + '=',14 cookieStart = document.cookie.indexOf(cookieName),15 cookieValue = null;16 //找到cookieName17 if (cookieStart > -1) {18 //以cookieStart為起點找到最近的";"19 var cookieEnd = document.cookie.indexOf(';', cookieStart);20 //沒找到";",則是document.cookie的最后一個值21 if (cookieEnd === -1) {22 cookieEnd = document.cookie.length;23 }24 //提取相應(yīng)value字段25 cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd));26 }27 //返回28 return cookieValue;29 },30 /**31 * 設(shè)置一個cookie32 * @param name cookie名字33 * @param value 相應(yīng)的值34 * @param expire 生存周期 Date35 * @param path 路徑36 * @param domain 域名37 * @param secure Boolean38 */39 set:function (name, value, expire, path, domain, secure) {40 //必須先進(jìn)行URL編碼41 var cookieText = encodeURIComponent(name) + '=' + encodeURIComponent(value);42 if (expire instanceof Date) {43 //toGMTString()方法正確格式化Date對象44 cookieText += '; expire=' + expire.toGMTString();45 }46 if (path) {47 cookieText += '; path=' + path;48 }49 if (domain) {50 cookieText += '; domain=' + domain;51 }52 if (secure) {53 cookieText += '; secure';54 }55 document.cookie = cookieText;56 },57 /**58 * 刪除cookie59 * @param name60 * @param path61 * @param domain62 * @param secure63 */64 unset:function (name, path, domain, secure) {65 this.set(name, '', new Date(0), path, domain, secure);66 }67 };68 /*69 //set cookies70 CookieUtil.set(“name”, “Nicholas”);71 CookieUtil.set(“book”, “Professional JavaScript”);72 //read the values73 alert(CookieUtil.get(“name”)); //”Nicholas”74 alert(CookieUtil.get(“book”)); //”Professional JavaScript”75 //remove the cookies76 CookieUtil.unset(“name”);77 CookieUtil.unset(“book”);78 //set a cookie with path, domain, and expiration date79 CookieUtil.set(“name”, “Nicholas”, “/books/projs/”, “www.wrox.com”,80 new Date(“January 1, 2010”));81 //delete that same cookie82 CookieUtil.unset(“name”, “/books/projs/”, “www.wrox.com”);83 //set a secure cookie84 CookieUtil.set(“name”, “Nicholas”, null, null, null, true);85 */86 87 //子cookie的操作88 //為了繞開瀏覽器的單域名下的cookie數(shù)限制89 //子cookie是存放在單個cookie中的更小段的數(shù)據(jù)90 var SubCookieUtil = {91 /**92 * 獲取單個子cookie的值93 * @param name cookie名稱94 * @param subName 子cookie名稱95 * @return {*}96 */97 get:function (name, subName) {98 var subCookies = this.getAll(name);99 if (subCookies) { 100 return subCookies(subName); 101 } else { 102 return null; 103 } 104 }, 105 /** 106 * 獲取所有子cookie并將它們放入一個對象中返回 107 * @param name cookie名稱 108 * @return {*} 返回對象或null 109 */ 110 getAll:function (name) { 111 var cookieName = encodeURIComponent(name) + "=", 112 cookieStart = document.cookie.indexOf(cookieName), 113 cookieValue = null, 114 result = {}; 115 if (cookieStart > -1) { 116 var cookieEnd = document.cookie.indexOf(";", cookieName); 117 if (cookieEnd === -1) { 118 cookieEnd = document.cookie.length; 119 } 120 //沒有進(jìn)行解碼,因為要對子cookie分離操作 121 cookieValue = document.cookie.substring(cookieStart + cookieName.length, cookieEnd); 122 // 123 if (cookieValue.length > 0) { 124 //分離出子cookie的對象 125 var subCookies = cookieValue.split("&"); 126 //遍歷分隔出子cookie的名稱和值,解碼后返回對象 127 for (var i = 0, len = subCookies.length; i < len; i++) { 128 var parts = subCookies[i].split("="); 129 result[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]); 130 } 131 return result; 132 } 133 } 134 //沒找到,返回空 135 return null; 136 }, 137 /** 138 * 存儲單個子cookie 139 * @param name cookie名稱 140 * @param subName 子cookie名稱 141 * @param value 子cookie值 142 * @param expires 失效日期 143 * @param path 路徑 144 * @param domain 域名 145 * @param secure Boolean安全作用域 146 */ 147 set:function (name, subName, value, expires, path, domain, secure) { 148 //獲取name名稱的所有子cookie,沒有則創(chuàng)建空對象 149 var subcookies = this.getAll(name) || {}; 150 //給對象添加屬性和值 151 subcookies[subName] = value; 152 //調(diào)用setAll()方法 153 this.setAll(name, subcookies, expires, path, domain, secure); 154 }, 155 /** 156 * 存儲所有子cookie 157 * @param name cookie名稱 158 * @param subcookies 子cookie名稱 159 * @param expires 失效日期 160 * @param path 路徑 161 * @param domain 域名 162 * @param secure Boolean安全作用域 163 */ 164 setAll:function (name, subcookies, expires, path, domain, secure) { 165 var cookieText = encodeURIComponent(name) + "="; 166 //創(chuàng)建數(shù)組,用于保存子cookie 167 var subcookieParts = []; 168 //遍歷對象屬性 169 for (var subName in subcookies) { 170 //如果存在,則把編碼后的名稱和值保存到數(shù)組 171 if (subName.length > 0 && subcookies.hasOwnProperty(subName)) { 172 subcookieParts.push(encodeURIComponent(subName) + "=" + encodeURIComponent(subcookies[subName])); 173 } 174 } 175 //存在子cookie 176 if (subcookieParts.length > 0) { 177 //連接子cookie 178 cookieText += subcookieParts.join("& "); 179 if (expires instanceof Date) { 180 cookieText += ";expires=" + expires.toGMTString(); 181 } 182 if (path) { 183 cookieText += ";path=" + path; 184 } 185 if (domain) { 186 cookieText += ";domain=" + domain; 187 } 188 if (secure) { 189 cookieText += ";secure"; 190 } 191 } else { 192 //相當(dāng)于刪除cookie操作 193 cookieText += ";expires=" + (new Date(0)).toGMTString(); 194 } 195 document.cookie = cookieText; 196 }, 197 /** 198 * 刪除單個子cookie的名稱和值 199 * @param name 200 * @param subName 201 * @param path 202 * @param domain 203 * @param secure 204 */ 205 unset:function (name, subName, path, domain, secure) { 206 var subcookies = this.getAll(name); 207 if (subcookies) { 208 //刪除對應(yīng)的屬性和值 209 delete subcookies[subName]; 210 //重新設(shè)置cookie 211 this.setAll(name, subcookies, null, path, domain, secure); 212 } 213 }, 214 /** 215 * 刪除所有子cookie 216 * @param name 217 * @param path 218 * @param domain 219 * @param secure 220 */ 221 unsetAll:function (name, path, domain, secure) { 222 this.setAll(name, null, new Date(0), path, domain, secure); 223 } 224 }; 225 /* 226 //assume document.cookie=data=name=Nicholas&book=Professional%20JavaScript 227 //get all subcookies 228 var data = SubCookieUtil.getAll(“data”); 229 alert(data.name); //”Nicholas” 230 alert(data.book); //”Professional JavaScript” 231 //get subcookies individually 232 alert(SubCookieUtil.get(“data”, “name”)); //”Nicholas” 233 alert(SubCookieUtil.get(“data”, “book”)); //”Professional JavaScript” 234 235 //assume document.cookie=data=name=Nicholas&book=Professional%20JavaScript 236 //set two subcookies 237 SubCookieUtil.set(“data”, “name”, “Nicholas”); 238 SubCookieUtil.set(“data”, “book”, “Professional JavaScript”); 239 //set all subcookies with expiration date 240 SubCookieUtil.setAll(“data”, { name: “Nicholas”, book: “Professional JavaScript” }, 241 new Date(“January 1, 2010”)); 242 //change the value of name and change expiration date for cookie 243 SubCookieUtil.set(“data”, “name”, “Michael”, new Date(“February 1, 2010”)); 244 245 //just remove the “name” subcookie 246 SubCookieUtil.unset(“data”, “name”); 247 //remove the entire cookie 248 SubCookieUtil.unsetAll(“data”); 249 */

轉(zhuǎn)載于:https://www.cnblogs.com/webFrontDev/archive/2012/11/24/2786022.html

總結(jié)

以上是生活随笔為你收集整理的对cookie和子cookie操作的封装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。