15 49.0138 8.38624 1 0 4000 1 https://www.alexmedina.net 300 true 0

Quitar el JavaScript que bloquea la visualización de contenido

1 Comment

Seguro que estas cansado de ver en PageSpeed Insights que tu web no esta optimizada por: «Quitar el JavaScript que bloquea la visualización de contenido»

De forma predeterminada, el código JavaScript bloquea la generación de DOM, lo que retrasa el primer renderizado. Por tanto, para que el código JavaScript no bloquee los analizadores, te recomendamos que introduzcas secuencias de comandos externas con el atributo HTML async. Por ejemplo:

<script async src="my.js">


Pero no todo es oro lo que reluce, la carga de ficheros javascript se genera de forma aleatoria y si tienes ficheros propios normalmente son más livianos que los que pertenecen al framework como puede suceder con jQuery provocando errores de ejecución al ejecutarse primer tu script antes de tener cargado jQuery.

Para ello la solución que se proponer es la siguiente,
empezamos con la carga del js de forma async:

<!DOCTYPE html>
<html>
    <head>
        <title>Prueba</title>
        <link href="hojadeestilos.css" rel="stylesheet" type="text/css">
        <script src="js/load_plus.js" type="text/javascript" <strong>async="async"</strong>></script>
    </head>
    <body>
        <div class="content">
        </div>
    </body>
</html>

Contenido del fichero load_plus.js:

function addEvent(element, event, fn) {
    if (element.addEventListener) {
        element.addEventListener(event, fn, false);
    } else if (element.attachEvent) {
        element.attachEvent('on' + event, fn);
    }
}
 
function loadScript(src, callback)
{
  var s,
      r,
      t,
      write;
 
  write = src.split("/");
  r = false;
  s = document.createElement('script');
  s.type = 'text/javascript';
  s.src = src;
  s.onload = s.onreadystatechange = function() {
    if ( !r && (!this.readyState || this.readyState == 'complete') )
    {
      r = true;
      if (callback !== undefined) {
        callback();
      }
    }
  };
  t = document.getElementsByTagName('script')[0];
  t.parentNode.insertBefore(s, t);
}
 
addEvent(window, 'load', function(){ loadScript(
        'http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js', 
        function () { loadScript('<strong>js/tu_script.js</strong>'); } );
});

Y el contenido de tu_script.js tendría que tener esta inicialización:

$(document).ready(function() {
    //funciones o ejecuciones utilizando jQuery $(...)...
});
Previous Post
Importar bases de datos MySQL desde la consola de Windows
Next Post
Como grabar pruebas para JMeter de forma fácil

1 Comment

  • 16 marzo, 2018 at 6:17 pm
    colettepiazza

    Gracias por tu aportación, Clément

    Reply

Leave a Reply

SOBRE MÍ

Afortunado de trabajar en lo que me gusta, aprendiendo cada día cosas nuevas y ayudando a crear proyectos.
Conocimientos en diversas tecnologías y experiencia demostrable.
¿Nos ponemos manos a la obra?

Mis Apuntes