¿Cómo retrasar el método document.ready() hasta que se establezca una variable en jQuery?

En este artículo, aprenderemos a retrasar document.ready hasta que se establezca una variable. El método document.ready() se usa para ejecutar algunos scripts jQuery o JavaScript cuando el HTML DOM está completamente cargado. 

Hay dos enfoques que se pueden seguir aquí:

Enfoque 1: Usar el método holdReady() en la biblioteca jQuery y el método setTimeout() . Primero establecemos el parámetro en el método holdReady() en verdadero para mantener la ejecución del método document.ready() . Luego, se puede agregar una función de tiempo de espera con un tiempo de retraso apropiado usando el método setTimeout() . Dentro de este método de tiempo de espera, se define una variable y, posteriormente , se vuelve a llamar a holdReady() , pero esta vez el parámetro se establece en falso para liberar la ejecución del método document.ready() . Por último, el documento.ready()Se llama al método y dentro de este método, la variable ahora está configurada y se muestra un elemento de división que indica que la variable se ha configurado. El contenido del elemento de división se establece mediante el método text() en jQuery.

Ejemplo: En este ejemplo, hay un retraso de 3 segundos (3000 milisegundos) en el método setTimeout() después del cual se establece la variable y el HTML DOM se carga por completo.

HTML

<!DOCTYPE html>
<html>
  
<head>
    <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">
    </script>
  
    <!-- Basic inline styling -->
    <style>
        body {
            text-align: center;
        }
  
        h1 {
            color: green;
            font-size: 40px;
        }
  
        div {
            font-size: 30px;
            font-weight: bold;
        }
    </style>
</head>
  
<body>
    <h1></h1>
      
    <!-- The division element -->
    <div></div>
    <script type="text/javascript">
        $.holdReady(true);
        setTimeout(function () {
  
            // Setting a variable until
            // document.ready is called
            const myVar = "GFG";
            $.holdReady(false);
        }, 3000);
        $(document).ready(function () {
            $("h1").text("GeeksForGeeks");
            $("div").text("The variable has been set!");
        });
    </script>
</body>
  
</html>

Producción:

Enfoque 2: usar el método holdReady() en la biblioteca jQuery y el método setInterval() . Este enfoque es muy idéntico al enfoque anterior, pero las distinciones clave se encuentran en la sintaxis del método document.ready que se representa como $(function(){ .. }) y se usa el método setInterval() en lugar de setTimeout( ) método. Por lo general, usamos el método setInterval() para repetir la función pasada en algún intervalo de tiempo, pero en este caso, tiene el mismo propósito que el método setTimeout() . Toda la lógica subyacente sigue siendo la misma que antes.

Ejemplo: En este ejemplo, hay un retraso de 2 segundos (2000 milisegundos) en el método setInterval() después del cual se establece la variable y el HTML DOM se carga por completo.

HTML

<!DOCTYPE html>
<html>
  
<head>
    <script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">
    </script>
  
    <!-- Basic inline styling -->
    <style>
        body {
            text-align: center;
        }
  
        h1 {
            color: green;
            font-size: 40px;
        }
  
        p,
        div {
            font-size: 30px;
            font-weight: bold;
        }
    </style>
</head>
  
<body>
    <h1></h1>
    <p></p>
  
    <!-- The division element -->
    <div></div>
    <script type="text/javascript">
        $.holdReady(true);
        setInterval(() => {
  
            // Setting a variable until
            // document.ready is called
            var myBoolean = true;
            $.holdReady(false);
        }, 2000);
  
        // Same as $(document).ready(function(){..})
        $(function () {
            $("h1").text("GeeksForGeeks");
            $("p").text(
"jQuery - Delay document.ready until a variable has been set"
            );
            $("div").text(
                "The boolean variable has been set!");
        });
    </script>
</body>
  
</html>

Producción:

Publicación traducida automáticamente

Artículo escrito por rajatsandhu2001 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *