Home > Enterprise >  Javascript event when first accessing the website
Javascript event when first accessing the website

Time:04-29

this is a pretty simple question in theory, but i can't seem to find an answer: is there such a thing as an event for when a user first accesses a website ? something like onload, but for the whole website, not for a single page.

basically i'm writing a website in Python Flask with Jinja. part of the website retrieves information from wikipedia, which slows the website a lot. so i added a toggle switch to activate / deactivate the wikipedia bit.

however, i can't seem to find a consistent way to define a default value for the button (when accessing the website, wikipedia enhancements are activated) while also keeping the button's value when navigating through the website (the button's value doesn't change unless you tell it to).

everything else works fine: toggling wikipedia enhancements on and off... i'm using Flask and Jinja, so if you have an idea using that, it's fine to !

here's the html button:

<label  id="wikitoggle">
   <input type="checkbox" value="active"/>
   <span />
   <span >Wikipedia</span>
</label>

and here's the javascript:

var wiki = document.querySelector("#wikitoggle input");

function wikiToggle() {
   if (wiki.getAttribute("value") === "inactive") {
       wiki.setAttribute("value", "active");
   } else {
       wiki.setAttribute("value", "inactive");
   };
   
   var data = {"wikistatus": wiki.getAttribute("value")};
   
   $.ajax({
      type: "GET",
      url: "/wikistatus",
      data: data,
      dataType: 'json',
   });
};

basically i set the value of an attribute and launch an asynchronous request to a flask route.

thanks !

CodePudding user response:

You could use window.localStorage. First check for an item in the localStorage; if it doesn't exist, the user is visiting for the first time. After that set the item inside localStorage. The next time a user visits the site localStorage will have that item set. For example:

const visited = window.localStorage.getItem('visited') !== null;

if (!visited) {
    // some code to run on first visit
}

window.localStorage.setItem('visited', true);

CodePudding user response:

There is no javascript event for what you want, but you can set a property in localStorage when the visitor lands on your site, then check for the existence of it.

if (localStorage.previousVisitor) {

    // do something for returning visitors
    console.log("Welcome back!")

} else {

   // do something for new visitors
    console.log("I'm new here!");

   // set the property as to not show this again
    localStorage.setItem("previousVisitor", "true");
}
  • Related