Kamil Z
Kamil Z

Reputation: 663

How to run script only when user land on page

I have some script, written in Javascript, that show progress of loading site elements. I put this script on index.html file, so it runs only on main page. It works perfectly fine, but now it show progress when you land on index.html and also when you come back to main page from subpage which is my problem because main page is already cached and it's waste of time.

My question is: How to run script only when user land on page, not when he come back from subpage?

Upvotes: 2

Views: 1986

Answers (4)

Ivan Arrizabalaga
Ivan Arrizabalaga

Reputation: 685

<html>
<head>
..
</head>
<body onload="doStuff()">
...
<script type="text/javascript" language="JavaScript">
//<![CDATA[
 function doStuff(){
   //check condition
   if (readCookie('checkFirstTime')!=null) return;

   //otherwise set the flag && do your thing
   createCookie('checkFirstTime','yep',1);
   alert("Welcome home Yo!");
   ...
 }

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

//]]>
</script>
...
</body>
</html>

Upvotes: -1

Wayne Smith
Wayne Smith

Reputation: 4868

In addition to cookies you can use document.referrer:

<script>
if(document.referrer &&
document.referrer.indexOf("yoursite.com") == -1)
{
    // Page loading process script goes here.
}
</script>

Upvotes: 0

Kai
Kai

Reputation: 9288

Try cookies to control when/when not to execute Javascript.

Upvotes: 4

JakeParis
JakeParis

Reputation: 11210

Create a cookie when the user hits index.html for the first time. Check for the cookie and only run the script if the cookie hasn't been set.

if(!isset($_COOKIE['something'])) {
    // run your loading script;
    setcookie('something','someValue');
}

Just be sure you have the above code before sending any output to the browser.

Upvotes: 1

Related Questions