Do Only Once
This post will show how to prevent pretty much any JavaScript function from running more than once with a cookie. The instructions in the JavaScript tell how to set up to cookie to be available site-wide or only from certain directories.
The first thing to do is to put these two lines of JavaScript into the function you want to limit to running only once:
if(HasCookie()) { return; } GiveCookie();
Make it so those two lines are the first lines the function runs. For example, if your function was
function Something() { alert("hello"); }
Then it would become
function Something() { if(HasCookie()) { return; } GiveCookie(); alert("hello"); }
That was the first step. The above code will work only when both steps have been completed.
What the above code does: If the browser has the cookie, processing returns out of the function. Otherwise, it is given the cookie and the function continues to run.
The next step is to insert this JavaScript somewhere above the modified function.
It doesn't have to be immediately above, although it can be. The idea is for the browser to load this JavaScript before the modified function is loaded.
<script type="text/javascript" language="JavaScript"> // Copyright 2007 Bontrager Connection, LLC // https://www.willmaster.com/ // // Type the domain name for the cookie. // These examples use domain name example.com. Use your own // domain name instead. // To cookie can be applied to the www.example.com and/or // the example.com versions of URL. Decide which you // want (or both) and specify the domain below. // "www.example.com" (sets cookie for // http://www.example.com/) // "example.com" (sets cookie for // http://example.com/) // ".example.com" (sets cookie for both // http://www.example.com/ and // http://example.com/ -- and also // http://anything.example.com) var CookieDomain = ".example.com"; // Specify the directory the cookie is set for. // To apply the cookie to the entire domain, specify "/" // To apply the cookie to only a certain directory (and its // subdirectories), specify "/directoryname" var CookieDirectory = "/"; // Specify the cookie name. The name may have only letters // and numbers. // The name matters only to make sure no other cookie with // the same name is set for this domain and directory. var CookieName = "myCookie"; // Specify how many days the cookie shall last. Use the // number 0 to make it a session cookie (a cookie that // will self-delete when the browser closes). var DaysCookieShallLive = 365; // // No other customization needs to be done in this JavaScript. // //// //// //// //// function GiveCookie() { var d = parseInt(DaysCookieShallLive); var exp = ''; if(d > 0) { var now = new Date(); then = now.getTime() + (d * 24 * 60 * 60 * 1000); now.setTime(then); exp = '; expires=' + now.toGMTString(); } document.cookie = CookieName+'=set; path='+CookieDirectory+'; domain='+CookieDomain+exp; } function HasCookie() { var cookiecontent = new String(); if(document.cookie.length > 0) { var cookiename = CookieName+'='; var cookiebegin = document.cookie.indexOf(cookiename); var cookieend = 0; if(cookiebegin > -1) { cookiebegin += cookiename.length; cookieend = document.cookie.indexOf(";",cookiebegin); if(cookieend < cookiebegin) { cookieend = document.cookie.length; } cookiecontent = document.cookie.substring(cookiebegin,cookieend); } } if(cookiecontent.length > 0) { return true; } return false; } </script>
Instructions in the JavaScript tell you where (and what) to specify the domain name, the section of the website the cookie shall affect, how long the cookie shall persist, and the cookie's name.
Remove the <script...> and </script> tags if the JavaScript will be in a file separate from the web page
Will Bontrager