faqts : Computers : Programming : Languages : JavaScript : Event handling

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

17 of 21 people (81%) answered Yes
Recently 6 of 10 people (60%) answered Yes

Entry

onLoad - how do I store each URL in a cookie, then track the number of times it's been loaded

Apr 28th, 2000 08:12
Mike Hall, Chris Tanner,


One simple way is to store a cookie for each page using the URL as the 
name and use the value as a counter. First you need some basic functions 
for handling cookies:
function setCookie (name, value, expires) {
  //Set a cookie given a name, value and expiration date.
  document.cookie = name + "=" + escape(value) + "; expires=" + 
expires.toGMTString() +  "; path=/";
}
function getCookie(name) {
  var search;
  // Returns the value of the named cookie.
  search = name + "=";
  offset = document.cookie.indexOf(search);
  if (offset != -1) {
    offset += search.length;
    end = document.cookie.indexOf(";", offset);
    if (end == -1)
      end = document.cookie.length;
    return unescape(document.cookie.substring(offset, end));
  }
  else
    return "";
}
function deleteCookie(name) {
  var expdate = new Date();
  // Delete the named cookie.
  expdate.setTime(expdate.getTime() - (86400 * 1000 * 1));
  setCookie(name, "", expdate);
}
Then you can run this code to get and update the counter
var n = window.location;  // Get URL for cookie name.
var d = new Date();       // Today's date.
var c;                    // Holds the counter value.
// Set an expiration date, 30 days in this case.
d.setTime(exp.getTime() + (86400 * 1000 * 30));
// See if the cookie exists already, if not set it to 1. Otherwise
// bump the counter.
if ((c = getCookie(n)) == "")
  setCookie(n, 1, d);
else
  setCookie(n, c + 1, d);
Note: you don't need to wait for the ONLOAD event to run this.