# JavaScript Cookies
**cookie 用來識別用戶。**
## 實例
[創建一個歡迎 cookie](/tiy/t.asp?f=jseg_cookie_username)
利用用戶在提示框中輸入的數據創建一個 JavaScript Cookie,當該用戶再次訪問該頁面時,根據 cookie 中的信息發出歡迎信息。
```
<html>
<head>
<script type="text/javascript">
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}
function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : "; expires="+exdate.toGMTString())
}
function checkCookie()
{
username=getCookie('username')
if (username!=null && username!="")
{alert('Welcome again '+username+'!')}
else
{
username=prompt('Please enter your name:',"")
if (username!=null && username!="")
{
setCookie('username',username,365)
}
}
}
</script>
</head>
<body onLoad="checkCookie()">
</body>
</html>
```
## 什么是cookie?
cookie 是存儲于訪問者的計算機中的變量。每當同一臺計算機通過瀏覽器請求某個頁面時,就會發送這個 cookie。你可以使用 JavaScript 來創建和取回 cookie 的值。
### 有關cookie的例子:
<dl class="define">
名字 cookie
當訪問者首次訪問頁面時,他或她也許會填寫他/她們的名字。名字會存儲于 cookie 中。當訪問者再次訪問網站時,他們會收到類似 "Welcome John Doe!" 的歡迎詞。而名字則是從 cookie 中取回的。
密碼 cookie
當訪問者首次訪問頁面時,他或她也許會填寫他/她們的密碼。密碼也可被存儲于 cookie 中。當他們再次訪問網站時,密碼就會從 cookie 中取回。
日期 cookie
當訪問者首次訪問你的網站時,當前的日期可存儲于 cookie 中。當他們再次訪問網站時,他們會收到類似這樣的一條消息:"Your last visit was on Tuesday August 11, 2005!"。日期也是從 cookie 中取回的。
## 創建和存儲 cookie
在這個例子中我們要創建一個存儲訪問者名字的 cookie。當訪問者首次訪問網站時,他們會被要求填寫姓名。名字會存儲于 cookie 中。當訪問者再次訪問網站時,他們就會收到歡迎詞。
首先,我們會創建一個可在 cookie 變量中存儲訪問者姓名的函數:
```
function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}
```
上面這個函數中的參數存有 cookie 的名稱、值以及過期天數。
在上面的函數中,我們首先將天數轉換為有效的日期,然后,我們將 cookie 名稱、值及其過期日期存入 document.cookie 對象。
之后,我們要創建另一個函數來檢查是否已設置 cookie:
```
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}
```
上面的函數首先會檢查 document.cookie 對象中是否存有 cookie。假如 document.cookie 對象存有某些 cookie,那么會繼續檢查我們指定的 cookie 是否已儲存。如果找到了我們要的 cookie,就返回值,否則返回空字符串。
最后,我們要創建一個函數,這個函數的作用是:如果 cookie 已設置,則顯示歡迎詞,否則顯示提示框來要求用戶輸入名字。
```
function checkCookie()
{
username=getCookie('username')
if (username!=null && username!="")
{alert('Welcome again '+username+'!')}
else
{
username=prompt('Please enter your name:',"")
if (username!=null && username!="")
{
setCookie('username',username,365)
}
}
}
```
這是所有的代碼:
```
<html>
<head>
<script type="text/javascript">
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}
function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}
function checkCookie()
{
username=getCookie('username')
if (username!=null && username!="")
{alert('Welcome again '+username+'!')}
else
{
username=prompt('Please enter your name:',"")
if (username!=null && username!="")
{
setCookie('username',username,365)
}
}
}
</script>
</head>
<body onLoad="checkCookie()">
</body>
</html>
```
- JavaScript 基礎
- JavaScript 簡介
- JavaScript 使用
- JavaScript 輸出
- JavaScript 語句
- JavaScript 注釋
- JavaScript 變量
- JavaScript 數據類型
- JavaScript 對象
- JavaScript 函數
- JavaScript 運算符
- JavaScript 比較和邏輯運算符
- JavaScript If...Else 語句
- JavaScript Switch 語句
- JavaScript For 循環
- JavaScript While 循環
- JavaScript Break 和 Continue 語句
- JavaScript 錯誤 - Throw、Try 和 Catch
- JavaScript 表單驗證
- JavaScript 保留關鍵字
- JavaScript JSON
- javascript:void(0) 含義
- JavaScript 高級
- JavaScript 對象
- JavaScript Number 對象
- JavaScript 字符串(String)對象
- JavaScript Date(日期)對象
- JavaScript Array(數組)對象
- JavaScript Boolean(邏輯)對象
- JavaScript Math(算數)對象
- JavaScript RegExp 對象
- JavaScript BOM
- JavaScript Window - 瀏覽器對象模型
- JavaScript Window Screen
- JavaScript Window Location
- JavaScript Window History
- JavaScript Window Navigator
- JavaScript 消息框
- JavaScript 計時
- JavaScript Cookies
- HTML DOM
- HTML DOM 簡介
- HTML DOM 節點
- HTML DOM 方法
- HTML DOM 屬性
- HTML DOM 訪問
- HTML DOM - 修改
- HTML DOM - 修改 HTML 內容
- HTML DOM - 元素
- HTML DOM - 事件
- HTML DOM - 導航
- JavaScript HTML DOM EventListener
- AJAX 教程
- AJAX 簡介
- AJAX 實例
- AJAX - 創建 XMLHttpRequest 對象
- AJAX - 向服務器發送請求
- AJAX - 服務器響應
- AJAX - onreadystatechange 事件
- AJAX ASP/PHP 請求實例
- AJAX 數據庫實例
- AJAX XML 實例
- jQuery 基礎
- jQuery 簡介
- jQuery 安裝
- jQuery 語法
- jQuery 選擇器
- jQuery 事件
- jQuery 效果
- jQuery 效果 - 隱藏和顯示
- jQuery 效果 - 淡入淡出
- jQuery 效果 - 滑動
- jQuery 效果 - 動畫
- jQuery 停止動畫
- jQuery Callback 函數
- jQuery - Chaining
- jQuery HTML
- jQuery - 獲得內容和屬性
- jQuery - 設置內容和屬性
- jQuery - 添加元素
- jQuery - 刪除元素
- jQuery - 獲取并設置 CSS 類
- jQuery - css() 方法
- jQuery - 尺寸
- jQuery 遍歷
- jQuery 遍歷
- jQuery 遍歷 - 祖先
- jQuery 遍歷 - 后代
- jQuery 遍歷 - 同胞
- jQuery 遍歷 - 過濾
- jQuery - AJAX
- jQuery - AJAX 簡介
- jQuery - AJAX load() 方法
- jQuery - AJAX get() 和 post() 方法
- jQuery 雜項
- jQuery - noConflict() 方法
- JavaScript 高級教程
- JavaScript 的歷史
- JavaScript 實現
- ECMAScript 基礎
- ECMAScript 語法
- ECMAScript 變量
- ECMAScript 關鍵字
- ECMAScript 保留字
- ECMAScript 原始值和引用值
- ECMAScript 原始類型
- ECMAScript 類型轉換
- ECMAScript 引用類型
- ECMAScript 運算符
- ECMAScript 一元運算符
- ECMAScript 位運算符
- ECMAScript Boolean 運算符
- ECMAScript 乘性運算符
- ECMAScript 加性運算符
- ECMAScript 關系運算符
- ECMAScript 等性運算符
- ECMAScript 條件運算符
- ECMAScript 賦值運算符
- ECMAScript 逗號運算符
- ECMAScript 語句
- ECMAScript if 語句
- ECMAScript 迭代語句
- ECMAScript 標簽語句
- ECMAScript break 和 continue 語句
- ECMAScript with 語句
- ECMAScript switch 語句
- ECMAScript 函數
- ECMAScript 函數概述
- ECMAScript arguments 對象
- ECMAScript Function 對象(類)
- ECMAScript 閉包(closure)
- ECMAScript 對象
- ECMAScript 面向對象技術
- ECMAScript 對象應用
- ECMAScript 對象類型
- ECMAScript 對象作用域
- ECMAScript 定義類或對象
- ECMAScript 修改對象
- ECMAScript 繼承
- ECMAScript 繼承機制實例
- ECMAScript 繼承機制實現
- Google 地圖API
- Google 地圖API Key
- Google Maps 基礎
- Google 地圖疊加層
- Google 地圖事件
- Google 地圖控件集
- Google 地圖類型
- Google 地圖 API 參考手冊
- 地圖 API Map() 構造器
- 免責聲明