判斷訪客的瀏覽器是否支援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 onload="cc()">
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 關閉了。以後要做什麼就不用我說了吧?