Microsoft KB Archive/189377

= FP97: Sample JavaScript for Tracking Site Visits via Cookies =

Article ID: 189377

Article Last Modified on 6/18/2005

-

APPLIES TO


 * Microsoft FrontPage 97 Standard Edition

-



This article was previously published under Q189377



For a Microsoft FrontPage 98 version of this article, see 194461.



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  tag:  <!--

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).")

// -->   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.

