[譯者注:將本文的最後示例代碼拷貝至文本文件中,更名文件為homepage.htm格式文件,在浏覽器中運行,本文以該示例代碼講解
簡介
====================================
問題是我想解決自動訪問http://www.thehungersite.com。這個頁面能夠限制你每一天只訪問它一次(不要忘記在這鏈接上點擊)。
現在為止,每次一開始我做的第一件事就是手工選擇我的書簽加載這個頁面。
為什麼不為它創建一個簡單的腳本程序呢?
因為我想讓它在Netscape和IE下都能夠同樣的工作,我開始學習javascript。
解決
====================================
主題思想很簡單:創建一個頁面並測試一下今天這個頁面是否已被加載過,
如果沒有加載,那就通過它鏈接到http://www.thehungersite.com,並且設置
這個頁面作為浏覽器的主頁。
獲取頁面並重定向是很容易的,問題是如何記憶這個頁面已被訪問過。
因為Javascript沒有文件訪問的功能,看來我們只能使用cookies了。
Cookies是一個有大小限制的變量,它與一個服務器的域名相關聯,
默認情況下cookie的生存期是當浏覽器關閉時被清空(注意:不是當你離開
這個頁面的時候),但可以用一個腳本程序改變這種情況,
在用戶關閉浏覽器後使cookies能夠存儲下來,Netscape在文件中使用所有的
Cookie,而IE分別存儲每個cookie。此外,不同的浏覽器會帶來一些意想
不到的情況,你必須確定一個用戶在它的浏覽器設置中是否關閉了cookies。
一切都很好也很妙,只是現在我還未在IE中測試它,調用示例Javascript語句:
cookieExpires = "01-APR-" + nLyear + " GMT";
document.cookies = cookieName + "=" + cookieValue + "; expires=" + cookieExpires;
然後調用
document.write(document.cookie);
document.cookie是空的。
在試驗和研究了一下上面的示例程序後,會發現:
1。你不能夠讀和顯示cookie。如果你想看一下這個cookie你需要指定與它相同的另一個字符串變量,如下:
document.cookie = cookieName + "=" + cookieValue + "; expires=" + cookieExpires;
myvar = cookieName + "=" + cookieValue + "; expires=" + cookieExpires;
document.write(myvar);
2. 浏覽器用了不同的日期格式:
Netscape使用"GMT"結束,IE使用“UTC",這是因為它可以更好的構建一個日期,象下面這樣:
var expdate = new Date()
cookieExpires.setTime (expdate.getTime() + 1 * (24 * 60 * 60 * 1000)) //+1 day
cookieExpires.toGMTString()
當你顯示日期部分
document.write(expdate.getYear() + "<br>" + expdate.getMonth() + "<br>" + expdate.getDate());
對於2000-11-15的日期,在IE中顯示為2000/10/15,在Netscape下顯示100/10/15(注:已確定是一些較低版本的
Netscape 浏覽器的Y2K問題)
示例中看到像下面這樣的部分:
if (platform == "Mac") {
lastVisit = lastVisit - (24 * 60 * 60 * 1000)
}
但我不可能檢測它。
日期對象有getDate和getDay的方法,第二個方法返回在一周中天的索引號。
----------------------------------------
知道了這些,基本上就沒問題了(現在你可以看一下homepage.htm)
[譯者注:將本文的最後示例代碼拷至文本文件中並保存htm格式,然後運行]
最後要說明的是,這不僅是一個專用的JS腳本,如果你想將它用在你的web頁面上你必須最小程度的使用不同的浏覽器測試它並注意它們的版本,許多的腳本程序包含了浏覽器類型檢測和大量的if...else語句,以處理這樣不同。
示例頁面homepage.htm源代碼
<html>
<head>
<title>Homepage</title>