1

Estoy tratando de capturar el número de veces que se recarga un pagina con java script, estoy usando el metodo load, sin embargo no se muy bien como hacerlo, he probado esto pero no obtengo resultado //muestra siempre uno

n = 0;


window.addEventListener("load", function(n){
  console.log(n = n +1);

});

como podría hacer para realizar la captura de esos datos

Gracias por la ayuda

BetaM
  • 30,571
  • 7
  • 32
  • 50
John Osorio
  • 585
  • 6
  • 22
  • 1
    Si lo ejecutas en javascript, la variable 'n' se creará cada vez que ejecutes la página, por lo que, cada vez de setearás a 0. Quizás una alternativa podría ser almacenar almacenar dicha variable en una cookie, "document.cookie = 'n=0' ". La cual persistirá hasta que el usuario la borre o caduque. – Grommy Apr 20 '20 at 04:34
  • intenta hacer una clausura – JackNavaRow Apr 20 '20 at 13:42

3 Answers3

1

Puedes guardar una variable en el local storage, luego recuperar esa variable y sumerle un número más.

if(localStorage.getItem('cuenta') === null) {
        localStorage.setItem('cuenta',1);
      } else {
        localStorage.setItem('cuenta', parseInt(localStorage.getItem('cuenta')) + 1);
      }
      var count = document.getElementById('count');
      count.innerText =localStorage.getItem('cuenta');
<p>numero de refresh <small id="count"></small></p>
0

Como lo tienes al momento pierdes la declaración del valor y su posterior incremento por que:

  • Tu variable esta dentro del contexto de window
  • Si ejecutas un window.location.reload() la ventana es recargada y la variable se pierde

De hecho si tratas de acceder a la variable posterior a eso te debería dar un error como:

Uncaught ReferenceError: n is not defined at :1:1

Como ya te dijeron puedes hacer uso de localStorage que de dará ventajas como:

  • Persistencia del valor asignado y acumulado
  • El valor sigue aunque la navegación quede cerrada o muevas tu código a otra pestaña
  • No necesitas evaluar que valor tiene al inicio ya que aunque trabaja con strings si le haces un cast al valor generado y lo tratas como Número lograrás que la suma inicie de 1 en 1

Lo harás mediante un:

Establezco el valor de una clave a la cual le doy un valor donde a su vez ese valor será la clave anteriormente establecida pero sumando un valor de 1 y finalmente la obtienes:

    <script>
    localStorage.setItem("visitas", Number(localStorage.getItem("visitas")) + 1)
    
    console.log(localStorage.getItem("visitas"))
    </script>

Referencia

BetaM
  • 30,571
  • 7
  • 32
  • 50
0

Que tal si usamos Clausuras

function contador(){
  n = 0;
  return ()=> console.info( ++n)

}
$btn = document.getElementById('tal');
$btn.addEventListener("click", contador())
<button id="tal">click</button>
JackNavaRow
  • 6,836
  • 5
  • 22
  • 49