2011年6月27日 星期一

使用Javascript處理網頁Cookie心得

一、問題說明
在網頁運作過程有時候會使用Client Cookie的技術處理一些個別化的資訊,當我們使用搜尋引擎去搜尋Javascript處理Cookie的技術文章時,可以得到非常多樣的版本,但這些程式碼面對同時需要在主流瀏覽器如IE、Firefox、Chrome會有適用上的問題。

二、蒐集與改作
為了讓處理Cookie的Javascript的程式碼能同時適用於IE、Firefox、Chrome,經個人蒐集、測試、改寫後,彙整成下面程式碼,發布給有此需求的網友使用,並請繼續改良提供修正意見。

三、程式碼
function GetCookieValue(c_name) {
var cookieValue = null;
var search = c_name + "=";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
cookieValue = unescape(document.cookie.substring(offset, end))
}
}
return cookieValue;
}
function DeleteCookie(c_name) {
var expiredays = 20;
var exdate = new Date()
exdate.setDate(exdate.getDate() - expiredays)
document.cookie = c_name + "=" + escape(0) + ";path=/" + ";domain=" + location.host + ((expiredays == null) ? "" : ";expires=" + exdate.toUTCString());
}
function SetCookieValue(c_name, value) {
var expiredays = 20;
var exdate = new Date()
exdate.setDate(exdate.getDate() + expiredays)
document.cookie = c_name + "=" + escape(value) + ";path=/" + ";domain=" + location.host + ((expiredays == null) ? "" : ";expires=" + exdate.toUTCString());
}
四、重點說明:
 1、GetCookieVaue有多種解法,此版本可以同時適用於各主流瀏覽器。
 2、SetCookieValue修改重點是:除了name value expires外一定要加入domain和path的value。

沒有留言: