2012-02-28 31 views
10

Necesito detectar la primera vez que se carga una página en jQuery para poder realizar algunas acciones solo cuando la página se carga la primera vez que un usuario navega a esa página. Similar a la página del código del lado del servidor. Postspinbasck. He probado $ (document) .ready y se activa cada vez que se carga la página, por lo que no proporcionará lo que necesito. También probé la función de carga jQuery, también dispara cada carga de página. Por ejemplo, al cargar la página, un ejemplo es que tengo una etiqueta de entrada HTML en la página de tipo botón y no activa una devolución de datos (como un botón asp.net) pero vuelve a cargar la página y dispara $ (documento). Listo¿Detecta la carga de la primera página con jQuery?

Gracias

+2

Vas a tener que utilizar cookies amigo. –

Respuesta

6

No existe un evento que se dispare solo cuando la página se carga por primera vez.

Debe utilizar jQuery's .ready() event, y luego insistir en el hecho de que ha manejado la carga de la página por primera vez con su método de elección (es decir, cookie, variable de sesión, almacenamiento local, etc.).

Nota: Este método nunca será infalible a menos que pueda almacenar esta información en el nivel de usuario en una base de datos. De lo contrario, tan pronto como el usuario borre sus cookies, o el método que elija, el código "primera vez que se carga" se activará nuevamente.

+4

Lo que dijo. Jquery (y javascript en general) no tienen una persistencia inherente entre las cargas de página. –

16

Tendrá que usar cookies para almacenar información de primera carga:

if (! $.cookie("cookieName")){ 
    // do your stuff 

    // set cookie now 
    $.cookie("cookieName", "firstSet", {"expires" : 7}) 
} 

Nota: El ejemplo de arriba usa jQuery Cookie plugin.

6

Acabo de toparme con este problema y así es como lo manejé. No perder de vista la primera vez que se carga la página mediante el uso de una variable initialLoad:

var initialLoad = true; 

$(document).ready(function() { 
    ... 
    ... 
    ... 

    initialLoad = false; 

}); 

Luego, en otras funciones, se puede hacer esto:

if (initialLoad) { 
    //Do work that is done when the page was first refreshed/loaded. 
} else { 
    //Do work when it's not the initial load. 
} 

Esto funciona bien para mí. Si el usuario ya está en la página y se ejecutan algunas funciones de jQuery, ahora sé si ese usuario acaba de cargar la página o si ya estaban en la página.

+0

"He probado $ (documento) .Ready y se activa cada vez que se carga la página, por lo que no proporcionará lo que necesito". - Claramente no es lo que él pidió – ghosh

-2

La solución más sencilla es utilizar jQuery ‘Once’ plug-in

$(element).once('class-name', function() { 
    // your javascript code 
}); 
Cuestiones relacionadas