¿Interpreta Google cualquier JavaScript que esté en el onready?

Publicado el 29 de mayo del 2017 por Lino Uruñuela

Aunque hemos visto en otras ocasiones cómo podría tratar Google el contenido cargado mediante JavaScript (usando Ajax con jQuery u otros métodos) ultimamente estoy con la duda de si está cambiando algo, ya que veo cosas que antes no veía o al menos de las que no me di cuenta.



Tabla que contiene el texto de prueba (seguir leyendo para entender por qué está aquí)

  • haz click para cargar contenido 1.
  • haz click para cargar contenido 2.



  • Este texto va a ser sustituido por el contenido en Ajax


    Fin de la tabla




    En un determinado site queremos cargar determinado contenido mediante javascript para que Google no lo valore, ya que es contenido de anunciantes que está hiper duplicado, es muy poco texto y aparece en casi todos los listados de la web.

    Esto no sería un problema si este anunciante no haya comprado la publicidad para casi todos los listados del site, y no solo una posición en el listado sino bastantes, lo que hace que a ojos de Google el 75% del contenido de cada listado del site sea el mismo texto.

    Lo ideal sería que ese contenido fuese algo trabajado para que realmente aporte valor, pero no es el caso, el anunciante nunca lo hará ni aceptará cambiarlo. Otra solución sería no mostrar ese contenido en todos los listados, pero el negocio manda.... Además, para más complicaciones el contenido es dinámico saliendo unos u otros valores dependiendo del listado en el que esté el usuario. A priori podría parecer que al ser dinámico no deberíamos tener problemas de duplicidad de texto entre distintos listados, pero la realidad dice que omitiendo el precio y algún que otro campo el resto será siempre igual, de aquí mi énfasis por dar con la mejor solución en cuanto a SEO.

    Dicho esto, vamos a crear el enésimo experimento para saber cómo trata Google el contenido cargado mediante Ajax y a la vez intentar averiguar hasta qué punto Google está ejecutando el código JavaScript, si es solo las funciones en el onready o si también es capaz de hacer "saltar" otras funciones que se ejecutan en base a acciones del usuario.

    Para ello hemos creado un fichero que contiene el contenido de todas las pruebas para este experimento, y que devolverá un texto u otro en base a qué parámetro se le pase. Tanto la url del fichero desde el que se carga el contenido como sus parámetros están ofuscados con base64, como vimos en otro post, en cuál comentamos una manera de camuflar los links para que Google no los tenga en cuenta como links y no diluya nuestro Link Juice.

    Ese método funciona para tal caso, Google no contará como link esos enlaces camuflados, pero no nos soluciona el cómo cargar determinado contenido sin que lo indexe y/o asocie a la url desde dónde se le llame sin ninguna acción por parte del usuario.

    Para este experimento SEO hemos preparado estas opciones
    1. Carga de contenido mediante Ajax con una función en el onready (por defecto)
    2. Carga de contenido mediante Ajax con una función en el onready tras haber pasado entre 1 y 5 segundos desde su carga.
    3. Carga de contenido mediante Ajax con una función en el onready tras haber pasado entre 5 y 10 segundos desde su carga.
    4. Carga de contenido mediante Ajax con una función en el onready tras haber pasado entre 11 y 14 segundos desde su carga.
    5. Carga de contenido mediante Ajax con una función al hacer scroll por parte del usuario.
    6. Carga de contenido mediante Ajax con una función al hacer click en un elemento del HTML, elemento 1,
    7. Carga de contenido mediante Ajax con una función al hacer click en un elemento del HTML, elemento 2,

     

    El contenido que se cargará por defecto será el de la opción 1, que se ejecuta tras el onready. Seguidamente, tras transcurrir entre 1 y 5 segundos desde que el html del documento esté listo, se cargará el contenido de la opción 2 (pasados entre 1 y 5 segundos). Continuará después cargando el contenido de la opción 3 (entre 5 y 10 segundos), y por último el contenido de la opción 4, tras haber pasado más de 11 segundos.

    Es decir, sin la acción del usuario (que serían las opciones 5,6 y 7) vamos a cargar cuatro contenidos distintos en base al tiempo que transcurra tras la completa carga del html (que no de sus elementos). Para ello usaremos el evento onready como lanzador de nuestra función, y así veremos también como Google si es capaz de ejecutar perfectamente casi cualquier javascript siempre y cuando se realice al cargar el documento/página.

    El texto de la tabla punteada de arriba está cargado mediante javascript, y la url del fichero desde dónde se extrae el contenido está encriptada en base64 para que Google no la crawlee solo por ser una cadena con patrón de url, sino que para cargar ese contenido Google ha tenido que ejecutar correctamente el código JavaScript.

    Podríamos resumir en estos los pasos necesarios para obtener el contenido externo:

    1. Ejecutar el código en las funciones ready del documento (seguramente el onload funcione igual)
    2. Decodificar esa url en base64 por medio de una función JavaScript
    3. Hacer la petición al fichero externo mediante Ajax
    4. Introducir el texto obtenido en la tabla

     

    Veremos como nada más cargar este post aparecerá un texto, cómo transcurridos entre 1 y 5 segundos hay otro texto y cómo transcurridos más de 5 segundos hay un tercer texto diferente. Además, también se cambiará el texto al hacer scroll (de ahí que esté en la zona superior del post), para poder verlo sin hacer scroll ya que cambiaría el texto

     

    Google al menos lanza una de las funciones

    Al explorar cómo Google a través de Google Search Console vemos que Google, al menos, ejecuta la función al cabo de 2 segundos que le damos en el on ready, (línea subrayada en al código de abajo).


    Google JavaScript

    <script language="javascript">
    
    var inicio;
    
    function cargarDivCodificadoCuando(div,url)
    		{
    				fin=new Date(); 
    				fin=fin.getTime(); 
    				tiempo=(fin-inicio)/1000;
    			  $(div).load(decodeURIComponent(b64_to_utf82(url)));
    			  window.document.getElementById("divTiempo").innerHTML="<br><br>Segundos transcurridos:<b>"+tiempo+"</b><br><sup>*(así podremos saber si Google siempre tarda lo mismo o no)</sup>";
    			  
    		}
    
    $(document).ready(function(){
    	inicio=new Date(); 
    	inicio=inicio.getTime(); 
    	cargarDivCodificadoCuando("#contenido","aHR0cDovL3d3dy5tZWNhZ29lbmxvcy5jb20vbWV0b2Rvcy1qYXZhc2NyaXB0LWNhcmdhQ29udGVuaWRvLnBocA==");
    	 setTimeout ( cargarDivCodificadoCuando , Math.floor(Math.random()*(5000-1000+1)+1000),"#contenido","aHR0cDovL3d3dy5tZWNhZ29lbmxvcy5jb20vbWV0b2Rvcy1qYXZhc2NyaXB0LWNhcmdhQ29udGVuaWRvLnBocD9vcGNpb249Y29uTWluaUVzcGVyYQ==");
    	 setTimeout ( cargarDivCodificadoCuando , Math.floor(Math.random()*(10000-5000+1)+5000),"#contenido","aHR0cDovL3d3dy5tZWNhZ29lbmxvcy5jb20vbWV0b2Rvcy1qYXZhc2NyaXB0LWNhcmdhQ29udGVuaWRvLnBocD9vcGNpb249Y29uRXNwZXJh");
    	 setTimeout ( cargarDivCodificadoCuando , Math.floor(Math.random()*(14000-11000+1)+11000),"#contenido","aHR0cDovL3d3dy5tZWNhZ29lbmxvcy5jb20vbWV0b2Rvcy1qYXZhc2NyaXB0LWNhcmdhQ29udGVuaWRvLnBocD9vcGNpb249Y29uRXNwZXJhMTA=");
    	 window.document.getElementById("Thun_imagen2").src ="http://www.mecagoenlos.com/fotos/onready-contenido.png&w="+Math.round(0.85*window.document.getElementsByClassName("descripcion")["0"].offsetWidth);
    });
    
    
    var hasBeenTrigged = false;
    
    
    $(window).scroll(function() {
      
         if ($(this).scrollTop() >= 100 && !hasBeenTrigged) { 
               cargarDivCodificadoCuando("#contenido","aHR0cDovL3d3dy5tZWNhZ29lbmxvcy5jb20vbWV0b2Rvcy1qYXZhc2NyaXB0LWNhcmdhQ29udGVuaWRvLnBocD9vcGNpb249Y29uU2Nyb2xs");
                hasBeenTrigged = true;
            }
        });
    
    </script>
    

    Habrá que esperar para saber cómo asocia este contenido extraído mediante javascript desde otra url y si es capaz de asociarlo a la url del post.

    Sería bueno saber si el tiempo que espera para ejecutar la función dentro del onready es más o menos el mismo o no

    También será interesante saber si Google indexa y/o asocia el contenido en el resto de los casos aquí expuestos. ¿Ejecutará la función tras 12 segundos? ¿emulará los clicks de los usuarios como en los links de arriba? ¿verá el contenido al que solo se accede mediante scroll?

     


    Comentarios

    Deja un comentario


    Posts anteriores en Cómo usar JavaScript AJAX


    • 2015-07-03 00:00:00

    Publicado por Lino Uruñuela el 3 de julio del 2015 Una de las cosas que más curiosidad me provoca Google es saber hasta que punto rastrea JavaScript, y hasta que punto es capaz de interpretar lo que con JavaScript haces en el site. Desde hace tiempo se ha pensado que Google

    Seguir leyendo
    • 0000-00-00 00:00:00

    function ejecutaCodigo2(variableJS){ if (window.XMLHttpRequest){ http_request = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE t

    Seguir leyendo
    • 0000-00-00 00:00:00

    function ejecutaCodigo(){ if (window.XMLHttpRequest){ http_request = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE try {

    Seguir leyendo
    • 0000-00-00 00:00:00

    Publicado el 14 de mayo del 2009 var nueva = "http://www.clavesde.com/experimento24.html"; alert("Esta es la URL que debería cachear si sigue las URLs en cualquier parte del código: http://www.clavesde.com/experimento24.html"); Hoy quiero comprobar si Google sigue las URLs que est&aacut

    Seguir leyendo
    • 0000-00-00 00:00:00

    Publicado el 8 de febrero del 2008 ¿Qué ocurriría si a Google le da por mostrar sus resultados usando Ajax? Imagina que cuando tú buscas algo en Google la URL siempre fuese la misma, mostrando sus resultados utilizando Ajax. Para el usuario todo sería aparant

    Seguir leyendo

    Datos de contacto
    • 637167218
    • wachynaky@gmail.com

    Dónde encontrarme

    FunnelPunk.com


    Blog Seo de Lino Uruñeula
    Co-Fundador



    Lánzate y pregunta!

    Nos gustan los robots, pero no tanto
    7 + 3

    Últimos posts

    Últimos comentarios


    Mateo Bohorquez

    Hola hermano, lo he intentado y no me funciona. para acotar problemas lo que hize fue usar ejemplo que nos redirige a otra pagina. este:
    Post: Ofuscando enlaces para mejorar Link Juice

    Juan M.

    ¿Esto lo has probado en Safari o Firefox? No pilla bien el preload para css
    Post: Cómo cargar css y js y no bloquear la carga de contenido

    Luis Salazar Jurado

    Buenas Lino He hecho un test en mi site: www.seotecnico.com y tras hacer test en Iphone, Chrome y Firefow parece que funciona Sería a
    Post: Cómo cargar css y js y no bloquear la carga de contenido

    Luis Salazar Jurado

    Gracias Lino por avisar. Solo he aplicado las mejoras de CSS y va como un tiro. Debido a que la web en la que lo he implementado cargo
    Post: Cómo cargar css y js y no bloquear la carga de contenido

    Tomás

    ...la línea ---?php wp_head()--- Gracias.
    Post: Cómo cargar css y js y no bloquear la carga de contenido

    Tomás

    Hola Lino. En WordPress, ¿de qué manera se podría editar una línea de código CSS y JS para añadir las modificaciones en verde que menc
    Post: Cómo cargar css y js y no bloquear la carga de contenido

    Juan M.

    Para mí, esa forma de cargar los estilos donde todo se ve sin estilo y los carga a los segundos me da una muy mala sensación del site. Tan
    Post: Cómo cargar css y js y no bloquear la carga de contenido

    Errioxa

    @Luis actualizado! Si te da algún problema avisa!
    Post: Cómo cargar css y js y no bloquear la carga de contenido

    Luis Salazar Jurado

    Lo he implementado y va como la seda Espero la actualización que has comentado en Twitter para ver el Javascript, pero solo con el CSS y
    Post: Cómo cargar css y js y no bloquear la carga de contenido

    Errioxa

    @Antonio solo Google sabe si se pasa o no lj con nofollow, en principio la url de destino no se vería beneficiada porque no lo contaría, p
    Post: ¿Cómo ejecuta, interpreta e indexa Google el contenido cargado mediante javascript?

    Categorias