cookie|cookies|javascript|瀏覽器
判斷訪問者的瀏覽器是否支援JavaScript和Cookies
許多網站需要用戶端做許多複雜的工作,比如:用用戶端 JavaScript 進行資料合法性校正,這需要客戶瀏覽器的JavaScript enabled;使用 Session 變數記錄身份等資訊,需要瀏覽器 Cookies enabled。因此,有必要確定使用者瀏覽器中的這些選項被開啟。在我的網站中,我使用了一串簡潔的代碼實現這些功能,在使用者登入時進行檢查,如果不符合就不讓登入。在本文中,我就介紹一下這個login頁面的寫法。
我們首先用 JavaScript 建立一個 Cookie,然後檢查 Cookie 是否存在。由於我們使用 JavaScript 進行這項操作,如果使用者沒有開啟 JavaScript,但開啟了 Cookies 的話,我們仍然會得到 Cookies 沒開啟的結果。但這與我們的要求並不衝突,反正我們是要求兩者都開啟的。(如果你確實只想知道 Cookies 是否 enabled,而不關心 JavaScript,也是有辦法的,我們在另文中討論)要確定使用者是否開啟 JavaScript,我在 html 中建立了一個隱藏 from,然後在 onload 事件中調一個 JavaScript 函數,改變該隱藏 form 的值,如果值被改變了,那就說明 JavaScript 是開啟的,否則這個JavaScript 函數就不會被調用。(上面兩個功能我寫在一個函數中)
首先,我們放一個隱藏 form 在 html 中,用<form>...</form>括起來。(當然,中間還可以有 username/password 的from)
<FORM>
...
<input type="hidden" name="cookieexists" value="false">
</FORM>
只要它的值是false,就說明瀏覽器不支援 JavaScript。注意其初始值是 false。我們的 JavaScript 函數將把這個值換
為true。在 BODY 中這樣寫:
<body >
cc()的內容如下:
<script language="JavaScript">
<!-
function cc()
{
/* check for a cookie */
if (document.cookie == "")
{
/* if a cookie is not found - alert user -
change cookieexists field value to false */
alert("COOKIES need to be enabled!");
/* If the user has Cookies disabled an alert will let him know
that cookies need to be enabled to log on.*/
document.Form1.cookieexists.value ="false"
} else {
/* this sets the value to true and nothing else will happen,
the user will be able to log on*/
document.Form1.cookieexists.value ="true"
}
}
/* Set a cookie to be sure that one exists.
Note that this is outside the function*/
document.cookie = 'killme' + escape('nothing')
// -->
</script>
這個程式能實現的功能是:
1 當使用者 JavaScript 開啟,而 Cookies 關閉時彈出警告資訊
2 當使用者 JavaScript 關閉,使用者無法直接得到檢查結果。(不要忘記,要彈出警告視窗也需要執行 alert 這個JavaScript 語句,這時即使檢查出來都無法提示),但這時使用者的 from 提交後,背景程式就會發現 cookieexists 這個域的值是 false,這就說明 JavaScript 關閉了。以後要做什麼就不用我說了吧?