FP98: Sample JavaScript for Tracking Site Visits via Cookies (194461)



The information in this article applies to:

  • Microsoft FrontPage 98 for Windows

This article was previously published under Q194461

For a Microsoft FrontPage 97 version of this article, see 189377.

SUMMARY

This article provides a sample JavaScript that keeps a record of how many times a given browser has visited a HyperText Markup Language (HTML) document using a cookie to record visits.

MORE INFORMATION

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements. Cookies are special files that a web server can use to store data on a client browser, such as Microsoft Internet Explorer. By using a cookie, you can track how often a particular visitor comes to your site compared with the total number of visits. A disadvantage is that if the client deletes the cookie by clearing out the browser's cache, the hit count will reset to zero.

You can record the number of visits with a cookie by using the following sample JavaScript. To enter this script, switch to HTML view in Frontpage Editor and type this script after the </TITLE> tag:
   <SCRIPT LANGUAGE="JavaScript">
   <!--

   var caution = false

   // name - name of the cookie
   // value - value of the cookie
   // [expires] - expiration date of the cookie
   // (defaults to end of current session)
   // [path] - path for which the cookie is valid
   // (defaults to path of calling document)
   // [domain] - domain for which the cookie is valid
   // (defaults to domain of calling document)
   // [secure] - Boolean value indicating if
   // the cookie transmission requires a secure transmission
   // * an argument defaults when it is assigned null as a placeholder
   // * a null placeholder is not required for trailing omitted arguments
   function setCookie(name, value, expires, path, domain, secure) {
      var curCookie = name + "=" + escape(value) +
         ((expires) ? "; expires=" + expires.toGMTString() : "") +
         ((path) ? "; path=" + path : "") +
         ((domain) ? "; domain=" + domain : "") +
         ((secure) ? "; secure" : "")
      if (!caution || (name + "=" + escape(value)).length <= 4000)
         document.cookie = curCookie
      else
         if (confirm("Cookie exceeds 4KB and will be cut!"))
            document.cookie = curCookie
   }

   // name - name of the cookie
   // * return string containing value
   // of specified cookie or null if cookie
   // does not exist
   function getCookie(name) {
      var prefix = name + "="
      var cookieStartIndex = document.cookie.indexOf(prefix)
      if (cookieStartIndex == -1)
         return null
      var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex +
         prefix.length)
      if (cookieEndIndex == -1)
         cookieEndIndex = document.cookie.length
      return unescape(document.cookie.substring(cookieStartIndex +
         prefix.length,
   cookieEndIndex))
   }

   // name - name of the cookie
   // [path] - path of the cookie
   // (must be same as path used to create cookie)
   // [domain] - domain of the cookie
   // (must be same as domain used to create cookie)
   // * path and domain default if assigned
   // null or omitted if no explicit argument proceeds
   function deleteCookie(name, path, domain) {
      if (getCookie(name)) {
         document.cookie = name + "=" +
         ((path) ? "; path=" + path : "") +
         ((domain) ? "; domain=" + domain : "") +
         "; expires=Thu, 01-Jan-70 00:00:01 GMT"
      }
   }

   // date - any instance of the Date object
   // * you should hand all instances of the
   // Date object to this function for "repairs"
   // * this function is taken from
   // Chapter 14, "Time and Date in JavaScript", in
   // "Learn Advanced JavaScript Programming"
   function fixDate(date) {
      var base = new Date(0)
      var skew = base.getTime()
      if (skew > 0)
         date.setTime(date.getTime() - skew)
   }

   var now = new Date()
   fixDate(now)
   now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000)
   var visits = getCookie("counter")
   if (!visits)
      visits = 1
   else
      visits = parseInt(visits) + 1
   setCookie("counter", visits, now)
   document.write("You have been here " + visits + " time(s).")

   // -->
   </SCRIPT>
				
When you are finished entering the script, save your page and then preview it in a Web browser to check functionality.

This script has been tested with Microsoft Internet Explorer versions 3.02 and 4.01 and Netscape Navigator version 4.05.

REFERENCES

Yehuda Shiran, Tomar Shiran, Tomer Shiran. "Learn Advanced JavaScript Programming, " Chapter 14. Time and Date in JavaScript, Plano, TX: Wordware Publishing.

Modification Type:MajorLast Reviewed:6/18/2005
Keywords:kbhowto KB194461