首頁 web前端 js教程 javascript製作的cookie封裝及使用指南_javascript技巧

javascript製作的cookie封裝及使用指南_javascript技巧

May 16, 2016 pm 04:22 PM
cookie javascript 封裝

一、前言

之前使用cookie,都是document.cookie的形式去操作,相容性雖好,但麻煩。個人又是個比較喜歡造輪子的人,所以針對cookie,封裝了個工具類。很久以來,我都喜歡寫程式碼,不太喜歡文字總結,也不太喜歡寫些零碎的東西,看來得改。

二、思路

(1)如何封裝,封裝成啥樣

如何封裝:就是使用原生的js封裝成工具,那樣到哪裡都能用。針對document.cookie封裝是最好的方式,所有的操作都基於document.cookie。

封裝成啥樣:封裝成能夠以物件的形式存在,同時可以使用getter & setter方法的實行。

(2)封裝哪些方法

get()、set(name, value, opts)、remove(name)、clear()、getCookies()等等,我個人覺得封裝這麼多方法足矣使用cookie了。

三、行動

(1)了解cookie, cookie的實質是HTTP cookie,在客戶端表現的物件時document.cookie.更多了解,可以看我下面的程式碼即註解

(2)上程式碼:這些程式碼應該都很直觀,並且可以搭配專案程式碼一起壓縮。我覺得下面的開頭的註解是重點。

複製程式碼 程式碼如下:

/*
 * HTTP Cookie:儲存會話資訊
 * 名稱和值傳送時必須是經過RUL編碼的
 * cookie綁定在指定的網域下,非本域無法共用cookie,但是可以是在主站共用cookie給子站
 * cookie有一些限制:例如IE6 & IE6- 限定在20個;IE7 50個;Opear 30個...所以一般會根據【必須】需求才設定cookie
 * cookie的名稱不分大小寫;同時建議將cookie URL編碼;路徑是區分cookie在不同情況下傳遞的好方法;帶安全標誌cookie
 *     在SSL情況下傳送至伺服器端,http則不會。建議針對cookie設定expires、domain、 path;每個cookie小於4KB
 * */
//對cookie的封裝,採取getter、setter方式
(function(global){
    //取得cookie對象,以對象表示
    function getCookiesObj(){
        var cookies = {};
        if(document.cookie){
            var objs = document.cookie.split('; ');
            for(var i in objs){
                var index = objs[i].indexOf('='),
                    name = objs[i].substr(0, index),
                    value = objs[i].substr(index 1, objs[i].length);   
                cookies[name] = value;
            }
        }
        return cookies;
    }
    //設定cookie
    function set(name, value, opts){
        //opts maxAge, path, domain, secure
        if(name && value){
            var cookie = encodeURIComponent(name) '=' encodeURIComponent(value);
            //選用參數
            if(opts){
                if(opts.maxAge){
                    cookie = '; max-age=' opts.maxAge;
                }
                if(opts.path){
                    cookie = '; path=' opts.path;
                }
                if(opts.domain){
                    cookie = '; domain=' opts.domain;
                }
                if(opts.secure){
                    cookie = '; secure';
                }
            }
            document.cookie = cookie;
            return cookie;
        }else{
            return '';
        }
    }
    //取得cookie
    function get(name){
        return decodeURIComponent(getCookiesObj()[name]) || null;
    }
    //清除某個cookie
    function remove(name){
        if(getCookiesObj()[姓名]){
            document.cookie = 名稱 '=;最大年齡=0';
        }
    }
    //清除所有cookie
    函數清除(){
        var cookies = getCookiesObj();
        for(cookie 中的 var key){
            document.cookie = key '=;最大年齡=0';
        }
    }
    //取得所有cookie
    函數 getCookies(name){
        回傳 getCookiesObj();
    }
    //解決衝突
    函數 noConflict(名稱){
        if(name && typeof name === 'string'){
            if(姓名 && 視窗['cookie']){
                視窗[姓名] = 視窗['cookie'];
                刪除視窗['cookie'];
                返回視窗[姓名];
            }
        }其他{
            返回視窗['cookie'];
            刪除視窗['cookie'];
        }
    }
    全域['cookie'] = {
        'getCookies': getCookies,
        '設定':設置,
        ‘獲取’:獲取,
        「刪除」:刪除,
        '清除':清除,
        '無衝突':無衝突
    };
})(視窗);

 (3)範例

複製程式碼程式碼如下:



   
       
        Cookie 範例標題>
    頭>
   
       
       
            console.log('----------cookie物件-------------');
            console.log(cookie);
            console.log('----------物件-------------');
            console.log(cookie.getCookies());
            console.log('----------設定cookie-------------');
            console.log(cookie.set('name', 'wlh'));
            console.log('----------設定cookie 123----------');
            console.log(cookie.set('name', 'wlh123'));
            console.log('----------設定cookie年齡----------');
            console.log(cookie.set('年齡', 20));
            console.log('----------取得cookie-------------');
            console.log(cookie.get('name'));
            console.log('----------取得所有-------------');
            console.log(cookie.getCookies());
            console.log('----------清除年齡-------------');
            console.log(cookie.remove('age'));
            console.log('----------取得所有-------------');
            console.log(cookie.getCookies());
            console.log('----------清除所有-------------');
            console.log(cookie.clear());
            console.log('----------取得所有-------------');
            console.log(cookie.getCookies());
            console.log('----------解決衝突-------------');
            var $Cookie = cookie.noConflict(true /*cookie 的新名稱*/);
            console.log($Cookie);
            console.log('----------使用新的命名為----------');
            console.log($Cookie.getCookies());
        腳本>
    身體>

(4)代碼位址:https://github.com/vczero/cookie

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

cookie存在哪裡 cookie存在哪裡 Dec 20, 2023 pm 03:07 PM

Cookie通常儲存在瀏覽器的Cookie資料夾中的,瀏覽器中的Cookie檔案通常以二進位或SQLite格式存儲,如果直接開啟Cookie文件,可能會看到一些亂碼或無法讀取的內容,因此最好使用瀏覽器提供的Cookie管理介面來檢視和管理Cookie。

電腦上的cookie在哪裡 電腦上的cookie在哪裡 Dec 22, 2023 pm 03:46 PM

電腦上的Cookie儲存在瀏覽器的特定位置,具體位置取決於使用的​​瀏覽器和作業系統:1、Google Chrome, 儲存在C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default \Cookies中等等。

集邦諮詢:英偉達 Blackwell 平台產品帶動台積電今年 CoWoS 產能提升 150% 集邦諮詢:英偉達 Blackwell 平台產品帶動台積電今年 CoWoS 產能提升 150% Apr 17, 2024 pm 08:00 PM

本站4月17日消息,集邦諮詢(TrendForce)近日發布報告,認為英偉達Blackwell新平台產品需求看漲,預估帶動台積電2024年CoWoS封裝總產能提升逾150%。英偉達Blackwell新平台產品包含B系列的GPU,以及整合英偉達自家GraceArmCPU的GB200加速卡等。集邦諮詢確認為供應鏈目前非常看好GB200,預估2025年出貨量預計超過百萬片,在英偉達高階GPU中的佔比達到40-50%。在英偉達計畫下半年交付GB200以及B100等產品,但上游晶圓封裝方面須進一步採用更複

手機cookie在哪裡 手機cookie在哪裡 Dec 22, 2023 pm 03:40 PM

手機上的Cookie儲存在行動裝置的瀏覽器應用程式中:1、在iOS裝置上,Cookie儲存在Safari瀏覽器的Settings -> Safari -> Advanced -> Website Data中;2、在Android裝置上,Cookie儲存在Chrome瀏覽器的Settings -> Site settings -> Cookies中等等。

瀏覽器cookie的儲存位置詳解 瀏覽器cookie的儲存位置詳解 Jan 19, 2024 am 09:15 AM

隨著網路的普及,我們使用瀏覽器進行上網已經成為一種生活方式。在日常使用瀏覽器過程中,我們常會遇到需要輸入帳號密碼的情況,如網購、社交、郵件等。這些資訊需要瀏覽器記錄下來,以便下次造訪時不需要再次輸入,這時候Cookie就派上了用場。什麼是Cookie? Cookie是指由伺服器端發送到使用者瀏覽器上並儲存在本地的一種小型資料文件,它包含了一些網站的使用者行為

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

AMD 'Strix Halo” FP11 封裝尺寸曝光:和英特爾 LGA1700 相當,比 Phoenix 大 60% AMD 'Strix Halo” FP11 封裝尺寸曝光:和英特爾 LGA1700 相當,比 Phoenix 大 60% Jul 18, 2024 am 02:04 AM

本站7月9日訊息,AMDZen5架構「Strix」系列處理器會有兩種封裝方案,其中較小的StrixPoint將採用FP8封裝,而StrixHalo將會採用FP11封裝。圖源:videocardz訊息源@Olrak29_最新曝料稱StrixHalo的FP11封裝尺寸為37.5mm*45mm(1687平方毫米),和英特爾AlderLake、RaptorLakeCPU的LGA-1700封裝尺寸相同。 AMD最新的PhoenixAPU採用FP8封裝方案,尺寸為25*40mm,這意味著StrixHalo的F

Cookie設定的常見問題及解決方案 Cookie設定的常見問題及解決方案 Jan 19, 2024 am 09:08 AM

Cookie設定的常見問題及解決方案,需要具體程式碼範例隨著網路的發展,Cookie作為一種最常見的常規技術,已廣泛應用於網站和應用程式中。 Cookie,簡單來說,是一種儲存在使用者電腦上的資料文件,可用於儲存使用者在網站上的信息,包括登入名稱、購物車內容、網站首選項等等。 Cookie對於開發人員來說是必不可少的工具,但同時,Cookie設定常常會遇到

See all articles