Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google

Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google

¿Sospecha que los problemas con JavaScript pueden bloquear la visualización de su contenido en el motor de búsqueda de Google? Descubra cómo eliminar los problemas asociados con JavaScript utilizando nuestra guía para eliminar los problemas.

JavaScript es una parte importante de la plataforma web, ya que proporciona muchas funciones que convierten la web en una poderosa plataforma de aplicaciones. Para que sus aplicaciones web utilizan JavaScript estén disponibles en el motor de búsqueda de Google, puede ayudarlo a atraer nuevos usuarios y devolver los existentes cuando buscan contenido que ofrece su aplicación web.

Aunque Google Search inicia JavaScript utilizando la versión actual de Chromium, hay varias cosas que se pueden optimizar.

Este liderazgo describe cómo Google Search procesa JavaScript y las mejores prácticas para mejorar la visibilidad de las aplicaciones JavaScript de su sitio en Google.

Cómo Google procesa JavaScript en su sitio web de Google

Google procesa la aplicación JavaScript de su sitio en tres etapas principales:

  • Grastrado (gateo)
  • Representación (representación)
  • Indexación (indexación)

Googlebot pone páginas en la cola para Kraling y Rendering. A veces no es obvio cuando la página espera a Kraling, y al renderizar. Cuando Googlebot extrae la URL de la línea de crowring, primero verifica si el escaneo está permitido. GoogleBot lee el archivo robots.txt.

Si la página está bloqueada para Kraling, Googlebot pierde su solicitud, y Google no representará a JavaScript en las páginas bloqueadas de su sitio.

Optimización de JavaScript para buscar su sitio en Google

A veces, las páginas de las aplicaciones de JavaScript usan la aplicación modelar, donde la inicial no contiene el contenido, y Google debe realizar JavaScript para ver el contenido real que genera JavaScript.

Googlebot coloca todas las páginas en la línea de representación, si solo los robots Methag o el encabezado no indican que la página no debe indexada. La página puede permanecer en línea durante unos segundos, pero esto puede llevar más tiempo. Después de que Google Resources lo permita, se realiza la página con la ayuda del cromo sin cabeza y JavaScript.

Cómo establecer titulares únicos y metadescripciones para su sitio en Google

Los elementos únicos y descriptivos de y metadescripciones ayudan a los usuarios a elegir rápidamente el mejor resultado para su objetivo en la búsqueda. Puede usar JavaScript para establecer o cambiar la metadescripción, así como un elemento de <bitle>.</p><H3>Haga que el código sea compatible con Google para su sitio</H3><p>Los navegadores ofrecen muchas API, y JavaScript es un lenguaje en rápido desarrollo. Google tiene restricciones sobre qué capacidades API y JavaScript admite. Para asegurarse de que su código sea compatible con Google, siga nuestras recomendaciones para eliminar los problemas con JavaScript.</p><H2>Cómo usar códigos de estado HTTP para su sitio de Google</H2><p>GoogleBot utiliza códigos de estado HTTP para determinar qué ha salido mal al cantar la página de su sitio.</p><p>Para informar a GoogleBot que la página no puede escanear o indexar, use códigos de estado comprensibles como 404 para páginas no encontradas o 401 para páginas protegidas por contraseña.</p><H3>Cómo evitar errores suaves de 404 en aplicaciones de una sola página (SPA)</H3><p>En las aplicaciones de una página con representación del cliente, el enrutamiento a menudo se implementa utilizando el enrutamiento del cliente. En este caso, el uso de códigos de estado HTTP correctos puede ser imposible o inapropiado. Para evitar errores suaves de 404 al usar la representación y el rugido del cliente, use las siguientes estrategias:</p><ul><li>Utilice la redirección de JavaScript a la URL, para la cual el servidor se reúne con el código 404 (por ejemplo, /no rescate).</li><li>Agregue el <meta name = "robots" content = "noindex"> en las páginas con errores usando JavaScript.</li></ul><H2>Uso de la API de la historia para su sitio de Google</H2><p>Google puede encontrar sus enlaces solo en <a> elementos con un atributo HREF.</p><p>Para aplicaciones de una página con representación del cliente, use la API de historial para implementar el enrutamiento entre diferentes ideas de su aplicación web. Asegúrese de que GoogleBot pueda procesar y extraer sus URL sin usar fragmentos de URL para descargar contenido diferente.</p><H2>La implementación correcta de la etiqueta rel = "canónica" para su sitio en Google</H2><p>Aunque no se recomienda usar JavaScript para introducir la etiqueta Rel = "Canonical", esto es posible. Google Search encontrará la URL canónica ingresada al presentar la página.</p><H2>Cómo usar Robots Metathes para su sitio de Google correctamente</H2><p>Puede prevenir la indexación de la página o los siguientes enlaces a través de los robots Methag. Por ejemplo, agregando el siguiente Metatheg al comienzo de la página, puede bloquear la indexación de la página en Google:</p><p><meta name = "robots" conte = "noindex, nofollow"></p><p>Es posible el uso de JavaScript para agregar robots Methag a la página o cambiar su contenido, pero es importante recordar que Google no representa o indexa la página si la etiqueta noindex ya está presente en el código de la página.</p><H2>Uso de almacenamiento en caché a largo plazo para su sitio de Google</H2><p>GoogleBot está en caché activamente las páginas para reducir las solicitudes de red y el uso de recursos. Para evitar problemas con los recursos anticuados de JavaScript o CSS, use la estrategia de huellas digitales para crear contenidos únicos basados.</p><H2>Cómo usar datos estructurados en su sitio web de Google</H2><p>Cuando use datos estructurados en las páginas de su sitio, puede usar JavaScript para generar JSON-LD e implementarlos en una página. Asegúrese de haber probado su implementación para evitar posibles problemas.</p><H2>Cómo seguir las mejores prácticas para los componentes web en su sitio web de Google</H2><p>Google admite componentes web. Al representar la página de Google "halagar" el contenido de Shadow Dom y Light Dom. Esto significa que Google solo puede ver el contenido que es visible en el Lean. Para asegurarse de que Google pueda ver su contenido, use la herramienta de prueba de resultados enriquecidos o la herramienta de verificación de URL y vea el Lean.</p><H2>Corrección de imágenes y carga de contenido perezoso para su sitio en Google</H2><p>Las imágenes pueden cargar en gran medida el rendimiento y afectar el rendimiento. Una buena estrategia es el uso de la carga perezosa para cargar imágenes solo cuando el usuario las vea. Asegúrese de que su implementación de la carga perezosa corresponde a las recomendaciones de Google.</p><H2>Cómo diseñar su sitio para la accesibilidad en Google</H2><p>Cree páginas para usuarios, no solo para motores de búsqueda. Cuando esté desarrollando un sitio, tenga en cuenta las necesidades de sus usuarios, incluidos aquellos que no usan navegadores que admitan JavaScript (por ejemplo, las personas que usan los programas para leer desde la pantalla o dispositivos móviles menos potentes).</p><p>Una de las formas simples de probar la disponibilidad del sitio es verlo en un navegador con un JavaScript desconectado o usar un navegador de texto, como Lynx. Ver el sitio en modo de texto también ayuda a identificar otro contenido que pueda ser difícil para Google, por ejemplo, un texto integrado en la imagen.</p><p>Para cualquier problema relacionado con el SEO de su sitio, puede comunicarse con SEO Companion <strong>CEO</strong> Por e -mail <a href="mailto:info@seo.computer">info@seo.computer</a> o a través de whatsapp por número +79202044461.</p><p>ID: 125</p> </div> </div> </div> </section> <section id="consultation" class="py-5"> <div class="container"> <div class="form-bg-gradient bor-r-20 my-3 p-4 p-md-5"> <div class="head-title-white text-center">Envíe una solicitud y le brindaremos una consulta. en SEO promoción de su sitio web</div> <form class="form row my-3 justify-content-center gy-2 needs-validation" id="form-consultation" action="https://seo.computer/form" method="post" novalidate=""> <input type="hidden" name="form_name" value="Отправьте заявку и мы бесплатно Блог"> <input type="hidden" name="_token" value="26fWWOm2T1iEn595S5KdI2ZjmE6Mye3FTl1IHsJe" autocomplete="off"> <div class="col-12 col-xl-3"> <input type="text" name="name" class="form-control form-padding rounded-5" placeholder="Su nombre" required=""> </div> <div class="col-12 col-xl-3"> <input type="tel" name="phone" class="form-control form-padding rounded-5" placeholder="Número de teléfono" required="" maxlength="18"> </div> <div class="col-12 col-xl-3"> <button type="submit" class="btn btn-send btn-light form-padding rounded-5 w-100">Enviar</button> </div> <div class="col-12 col-md-12"> <div class="text-center"> <a class="text-decoration-none text-white fs-14" href="https://seo.computer/policy">Al enviar una solicitud, aceptas la política de privacidad.</a> </div> </div> </form> </div> </div> </section> <footer class="footer-bg"> <style> .bottom-contact-bar { display:none; } @media(max-width:992px) { .bottom-contact-bar { display:block; position:fixed; bottom:0; left:0; right:0; z-index: 9999; } .footer-bg { padding-bottom: 16px; } .b24-widget-button-position-bottom-right, .social { margin-bottom: 24px; } } </style> <div class="navbar navbar-dark bg-dark py-1 bottom-contact-bar"> <div class="container justify-content-center"> <div class="nav-link h6 mb-0 p-0 text-white" style="text-align:center"> <a style="text-decoration:none; color:inherit" href="mailto:info@seo.computer">info@seo.computer</a> </div> </div> </div> <style>.norender{display:none;visibility:hidden;}</style> <div class="container"> <div class="row row-cols-4 col-md-12 text-light pt-3 pt-md-5 g-3"> <div class="col-12 col-xl-3 col-md-6 vcard" itemscope itemtype="http://schema.org/LocalBusiness"> <a class="url" href="https://seo.computer/es"> <img src="https://seo.computer/assets/svg/seo_logo.svg" alt="SEO Computer Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google en Moscú" title="SEO Computer Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google en Moscú" class="rounded-5" width="200" height="40" /> </a> <ul class="nav flex-column"> <li class="fn org" itemprop="name">SEO COMPUTER</li> <li class="category">Mercadotecnia en Internet</li> <li>Horario de apertura: <span class="workhours" itemprop="openingHours" datetime="Mo-Su">todo el día</span></li> <li class="norender"> <span itemprop="priceRange" class="pricerange">de 186 EUR</span> <img loading="lazy" aria-hidden="true" width="2048" height="2048" itemprop="image" style="width:unset;height:unset;" class="absolute-bg-from-top__image photo" src="https://seo.computer/uploads/seo-article-1x1/seo-article-10125.webp"> </li> <li class="nav-item mb-2 color-bfbfbf adr"> <span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"><span class="locality" itemprop="addressLocality">Moscú</span></span> </li> <li class="nav-item mb-2 email"><a href="mailto:info@seo.computer" style="text-decoration:none;" class="color-bfbfbf" title="Email"><span itemprop="email">info@seo.computer</span></a></li> </ul> </div> <div class="col-12 col-xl-3 col-md-6"> <div class="fw-500 fs-20 mb-2">Menú</div> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="#tarifs" class="nav-link p-0 color-bfbfbf" title="SEO Tarifas">SEO Tarifas</a></li> <li class="nav-item mb-2"><a href="#reviews" class="nav-link p-0 color-bfbfbf" title="SEO Reseñas">SEO Reseñas</a></li> <li class="nav-item mb-2"><a href="#quiz" class="nav-link p-0 color-bfbfbf" title="SEO Calculadora">SEO Calculadora</a></li> <li class="nav-item mb-2"><a href="#sales" class="nav-link p-0 color-bfbfbf" title="SEO Promociones">SEO Promociones</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/es/contact" class="nav-link p-0 color-bfbfbf" title="Contactos">SEO Contactos</a></li> </ul> </div> <div class="col-12 col-xl-3 col-md-6"> <div class="fw-500 fs-20 mb-2">Servicios</div> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="https://seo.computer/es/business" class="nav-link p-0 color-bfbfbf" title="Empresas">SEO para empresas</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/es/type-sites" class="nav-link p-0 color-bfbfbf" title="tipos de sitios">SEO para tipos de sitios</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/es/cms" class="nav-link p-0 color-bfbfbf" title="Sistemas CMS">SEO para CMS sistemas</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/es/languages" class="nav-link p-0 color-bfbfbf" title="Idiomas">SEO para idiomas</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/es/engines" class="nav-link p-0 color-bfbfbf" title="Los motores de búsqueda">SEO para motores de búsqueda</a></li> </ul> </div> <div class="col-12 col-xl-3 col-md-6"> <div class="fw-500 fs-20 mb-2">Red social</div> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="https://wa.me/79202044461" class="nav-link p-0 color-bfbfbf" title="Whatsapp"><i class="fab fa-whatsapp me-1"></i>Whatsapp</a></li> <li class="nav-item mb-2"><a href="https://t.me/t9202044461/" class="nav-link p-0 color-bfbfbf" title="Telegram"><i class="fab fa-telegram-plane me-1"></i>Telegram</a></li> <li class="nav-item mb-2"><a href="mailto:info@seo.computer" class="nav-link p-0 color-bfbfbf" title="Email"><i class="fas fa-envelope me-1"></i>Email</a></li> </ul> </div> </div> <div class="justify-content-between pt-2 pb-4 mt-2 border-top col-md-12 text-light"> <p>Este sitio tiene fines informativos únicamente y no es una oferta pública. Para obtener información precisa sobre los servicios prestados y sus costos, comuníquese con los gerentes de la empresa.</p> <a class="text-decoration-none color-bfbfbf" href="https://seo.computer/es/policy">política de privacidad</a> <div class="mt-2"> <!--LiveInternet counter--><a href="https://www.liveinternet.ru/click" target="_blank"><img id="licntD152" width="31" height="31" style="border:0" title="LiveInternet" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7" alt="LiveInternet"/></a><script defer async>setTimeout(function(){(function(d,s){d.getElementById("licntD152").src="https://counter.yadro.ru/hit?t44.6;r"+escape(d.referrer)+((typeof(s)=="undefined")?"":";s"+s.width+"*"+s.height+"*"+(s.colorDepth?s.colorDepth:s.pixelDepth))+";u"+escape(d.URL)+";h"+escape(d.title.substring(0,150))+";"+Math.random()})(document,screen)},4000);</script><!--/LiveInternet--> </div> </div> </div> </footer> <div class="modal fade" id="exampleModalToggle" aria-hidden="true" aria-labelledby="exampleModalToggleLabel" tabindex="-1"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <div class="modal-title fw-500 fs-20" id="exampleModalToggleLabel">dejar una solicitud</div> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <img loading="lazy" src="https://seo.computer/assets/svg/mobile_marketing.svg" class="my-3 mx-auto" width="300" height="260" alt="dejar una solicitud Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google en Moscú" title="dejar una solicitud Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google en Moscú"> <form class="form needs-validation" action="https://seo.computer/form" id="form-popup" method="post" novalidate> <input type="hidden" name="form_name" value="Цены - форма (гл. стр.)"> <input type="hidden" name="_token" value="26fWWOm2T1iEn595S5KdI2ZjmE6Mye3FTl1IHsJe" autocomplete="off"> <div class="modal-body"> <label class="fs-5 text-center fw-bold">Deje una solicitud y nuestro SEO El especialista se comunicará con usted pronto.</label> <div class="row"> <div class="col-12"> <input type="text" name="name" class="form-control form-padding my-2" placeholder="Su nombre" required> </div> <div class="col-12"> <input type="tel" name="phone" class="form-control form-padding my-2" placeholder="Número de teléfono" required> </div> </div> </div> <div class="modal-footer justify-content-center"> <button class="btn rounded-5 btn-primary w-100 form-padding" type="submit">Enviar</button> <a href="policy.html" class="text-decoration-none text-dark text-center fs-14">Al enviar datos, aceptas la política de privacidad.</a> </div> </form> </div> </div> </div> <div class="modal fade" id="ModalLanguage" tabindex="-1" aria-labelledby="ModalLanguage" aria-hidden="true"> <div class="modal-dialog modal-sm modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <div class="modal-title fs-22 fw-500" id="exampleModalLabel">Elige lengua</div> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <form class="modal-body" id="languageForm" method="post"> <input type="hidden" name="_token" value="26fWWOm2T1iEn595S5KdI2ZjmE6Mye3FTl1IHsJe" autocomplete="off"> <select class="form-select mb-2" aria-label="Elige lengua" name="language" id="language"> <option selected>Elige lengua</option> <option value="cn" >Chino simplificado) (cn)</option> <option value="nl" >Holandés (nl)</option> <option value="en" >Inglés (en)</option> <option value="fr" >Francés (fr)</option> <option value="de" >Alemán (de)</option> <option value="id" >indonesio (id)</option> <option value="it" >italiano (it)</option> <option value="jp" >japonés (jp)</option> <option value="pl" >Polaco (pl)</option> <option value="pt" >portugués (pt)</option> <option value="ru" >ruso (ru)</option> <option value="es" selected >Español (es)</option> <option value="tr" >turco (tr)</option> </select> <button type="submit" class="btn btn-primary w-100">Cambiar</button> </form> </div> </div> </div> <div class="modal fade" id="SuccessModal" tabindex="-1" aria-labelledby="SuccessModal" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <div class="modal-title fs-22 fw-500" id="SuccessModalLabel"></div> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body text-center"> <img src="https://seo.computer/assets/svg/mail_send.svg" alt="Enviado correctamente Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google en Moscú" title="Enviado correctamente Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google en Moscú" width="160" height="144" class="mb-5"> <div class="h4" style="color: #000;">Enviado correctamente!</div> <p style="color: #000;">¡Gracias, su solicitud ha sido enviada exitosamente! Nos comunicaremos con usted en breve.</p> </div> </div> </div> </div> <div class="modal fade" id="myModal" tabindex="-1" aria-labelledby="modalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content custom-modal"> <div class="modal-body d-flex align-items-center justify-content-between"> <!-- Rasm joyi --> <div class="modal__contents"> <div class="modal_top"> <span class="section_title">dejar una solicitud</span> <p class="text-muted mt-1">Y nuestro especialista en SEO se comunicará con usted en un futuro cercano</p> </div> <form id="form-analytcs" action="https://seo.computer/form" method="post" class="modal__contents_inputs flex flex-wrap justify-content-between "> <input type="hidden" name="form_name" value="Страница анализатора"> <input type="hidden" name="_token" value="26fWWOm2T1iEn595S5KdI2ZjmE6Mye3FTl1IHsJe" autocomplete="off"> <div class="modal__contents_input"> <input type="text" class="form-control" placeholder="Su nombre" name="name" id="name" required /> </div> <div class="modal__contents_input"> <input type="tel" class="form-control phone_input" placeholder="Número de teléfono" id="phone" name="phone" required /> </div> <div class="modal__contents_input"> <input type="text" class="form-control" placeholder="La dirección de tu sitio web" name="website" id="website" required /> </div> <button type="submit" class="button desctop">Enviar</button> <button type="submit" class="button mobile">Enviar</button> </form> <p class="policy mt-3">Al enviar una solicitud, usted acepta <a href="https://seo.computer/ru/policy">Con una política de confidencialidad</a></p> </div> <div class="img-container d-flex align-items-start"> <!-- Rasmni o'z manzilingiz bilan almashtiring --> <img src="https://seo.computer/assets/images/modal_img.png" alt="Rasm" class="img-fluid" /> <button class="close" data-bs-dismiss="modal" aria-label="Close"> <img src="https://seo.computer/assets/images/exit.svg" alt=""> </button> </div> <!-- Forma --> </div> </div> </div> </div> <div class="modal fade" id="ModalCity" tabindex="-1" aria-labelledby="ModalCity" aria-hidden="true"> <div class="modal-dialog modal-xl modal-dialog-centered"> <div class="modal-content"> <div class="modal-header"> <div class="modal-title fs-22 fw-500" id="exampleModalLabel">Selecciona una ciudad</div> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cerca"></button> </div> <div class="modal-body cites"> <div class="row mb-2"> <div class="col-sm-12"> <input class="form-control form-padding" id="search" name="query" placeholder="Introduzca el nombre de la ciudad..."> </div> </div> <div class="row row-cols-1" id="cites"></div> </div> </div> </div> </div> <style>.lateload-show-buttons{display:none;}</style> <div class="social lateload-show-buttons"> <button class="shareButton tg open" data-bs-toggle="modal" data-bs-target="#SocialModal" data-bs-content="escribir a telegram" title="escribir a telegram Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google en Moscú" data-bs-link="https://t.me/t9202044461/"> <img width="24" height="24" style="display:inline-block" src="https://seo.computer/assets/images/c_telegram.webp" alt="escribir a telegram Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google en Moscú" title="escribir a telegram Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google en Moscú"> </button> <button class="shareButton wt open" data-bs-toggle="modal" data-bs-target="#SocialModal" data-bs-content="escribir a whatsapp" title="escribir a whatsapp Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google en Moscú" data-bs-link="https://wa.me/79202044461"> <img width="24" height="24" style="display:inline-block" src="https://seo.computer/assets/images/c_whatsapp.webp" alt="escribir a whatsapp Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google en Moscú" title="escribir a whatsapp Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google en Moscú"> </button> </div> <script defer async> setTimeout(function(){$('.lateload-show-buttons').css('display','flex').hide().fadeIn();}, 4000); </script> <!-- Modal --> <div class="modal fade" id="SocialModal" tabindex="-1" aria-labelledby="SocialModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header" style="text-align:center;"> <span style="font-size: 1.25rem;" class="modal-title" id="SocialModalLabel">Conéctate con nosotros</span> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body text-center"> <a type="button" class="btn btn-primary" id="Soclink" href="#">Escribir</a> </div> </div> </div> </div> <script defer async> var SocialModal = document.getElementById('SocialModal') SocialModal.addEventListener('show.bs.modal', function (event) { setTimeout(function(el){ let halfScreenHeight = window.screen.height / 2; let coefdBlockHeight = el.offsetHeight * 1.75; //console.log(el.offsetHeight); let newTopPx = Math.round(halfScreenHeight - coefdBlockHeight); el.style.transform = 'translate(0, ' + newTopPx + 'px)'; }, 250, SocialModal.children[0]); // Button that triggered the modal var button = event.relatedTarget // Extract info from data-bs-* attributes var link = button.getAttribute('data-bs-link') var content = button.getAttribute('data-bs-content') var Soclink = SocialModal.querySelector('#Soclink') Soclink.setAttribute('href', link) Soclink.textContent = content }); (() => { 'use strict' // Fetch all the forms we want to apply custom Bootstrap validation styles to const forms = document.querySelectorAll('.needs-validation') // Loop over them and prevent submission Array.from(forms).forEach(form => { form.addEventListener('submit', event => { if (!form.checkValidity()) { event.preventDefault() event.stopPropagation() } form.classList.add('was-validated') }, false) }) })() </script> <!--JavaScripts--> <script rel="lazy" src="https://seo.computer/assets/js/jquery-3.6.0.min.js" ></script> <script defer async src="https://seo.computer/assets/js/bootstrap.min.js" ></script> <script src="https://seo.computer/assets/js/custom-blocks.js" charset="utf-8"></script><script defer async src="https://seo.computer/assets/js/jquery.mask.min.js" async></script> <!-- <script defer async src="https://seo.computer/assets/js/lottie-player.js" ></script> --> <!-- Bitrix --> <!-- <script defer async> setTimeout(function(){ (function(w,d,u){ var s=d.createElement('script');s.async=true;s.src=u+'?'+(Date.now()/60000|0); var h=d.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h); })(window,document,'https://cdn-ru.bitrix24.ru/b20061858/crm/site_button/loader_7_7psi5t.js'); setTimeout(function(){ let linksNoHref = [...document.querySelectorAll('a.b24-widget-button-social-item')]; if (linksNoHref.length > 0) { for (l of linksNoHref) { if (!l.href) l.setAttribute('href','#'); } } }, 1000); }, 4000); </script> <script defer async> window.addEventListener('onBitrixLiveChat', function(event) { var widget = event.detail.widget; widget.subscribe({ type: BX.LiveChatWidget.SubscriptionType.configLoaded, callback: function() { widget.addLocalize({BX_LIVECHAT_LOADING: ' '}); widget.addLocalize({BX_LIVECHAT_ERROR_TITLE: ' '}); widget.addLocalize({ BX_LIVECHAT_VOTE_BUTTON: ' ', BX_LIVECHAT_ERROR_DESC: ' ', BX_MESSENGER_TEXTAREA_PLACEHOLDER: '✎...', }) } }); }); </script> <style>.b24-widget-button-wrapper.b24-widget-button-position-bottom-right, .b24-widget-button-wrapper.b24-widget-button-position-bottom-middle, .b24-widget-button-wrapper.b24-widget-button-position-bottom-left {bottom: 5px; right: 2px;} .bx-livechat-logo-name, .bx-livechat-logo-icon, .bx-livechat-copyright-link, .bx-livechat-help-title-lg, .bx-im-dialog-group-date, .b24-form-sign, .bx-imopenlines-message-dialog-number, .bx-imopenlines-form-result-title, .bx-livechat-user-position, .bx-im-message-type-system .bx-im-message-content, .b24-form-control-alert-message, .bx-touch .b24-widget-button-position-bottom-right .b24-widget-button-popup-triangle {display:none} .bx-livechat-help-title-sm {font-size:0px;} .b24-form-wrapper {min-height: 150px !important;} .bx-imopenlines-form-result-container {min-height: 50px !important;} .bx-imopenlines-form-result-container.bx-imopenlines-form-success {background: none;border-bottom: none;} .bx-touch .b24-widget-button-position-bottom-right .b24-widget-button-popup {left: -240px !important; bottom: 5px !important;}</style> --> <!-- /Bitrix --> <!-- Yandex.Metrika counter --> <script defer async type="text/javascript" async> setTimeout(function(){ (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym(86303743, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, ecommerce:"dataLayer" }); }, 4000); </script> <noscript><div><img width="1" height="1" src="https://mc.yandex.ru/watch/86303743" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-R6MGYCXWFG"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-R6MGYCXWFG'); </script> <!-- Top100 (Kraken) Counter --> <script defer async> setTimeout(function(){ (function (w, d, c) { (w[c] = w[c] || []).push(function() { var options = { project: 7728665, }; try { w.top100Counter = new top100(options); } catch(e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//st.top100.ru/top100/top100.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(window, document, "_top100q"); }, 4000); </script> <noscript> <img width="1" height="1" src="//counter.rambler.ru/top100.cnt?pid=7728665" alt="Top 100 Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google en Moscú" title="Top 100 Fundamentos de JavaScript SEO: Cómo mejorar la visibilidad de su sitio en Google en Moscú" /> </noscript> <!-- END Top100 (Kraken) Counter --> <script defer async> $(document).ready(function() { $(".form").submit(function(e) { e.preventDefault(); var form = $(this); if (form.find('input:invalid').length === 0) { $.ajax({ type: "POST", url: form.attr('action'), datatype: 'json', data: form.serialize(), // serializes the form's elements. success: function(data) { if(data.message === true) { $('#SuccessModal').modal('show'); form.trigger('reset'); } } }); } }); $("#form-analytcs").submit(function(e) { e.preventDefault(); var form = $(this); if (form.find('input:invalid').length === 0) { $.ajax({ type: "POST", url: form.attr('action'), datatype: 'json', data: form.serialize(), // serializes the form's elements. success: function(data) { if(data.message === true) { $('#myModal').modal('hide'); $('#SuccessModal').modal('show'); form.trigger('reset'); } } }); } }); // ---- Analyzer redirect: hijack hero_form to push directly into seo-analyzer ---- $('form.hero_form[data-analyzer-redirect="1"]').on('submit', function(e){ var form = $(this); var input = form.find('input[name="domain"]'); var raw = (input.val() || '').trim(); if (!raw) { return; } var endpoint = form.attr('data-analyzer-url') || 'https://seo-analyzer.seo.computer/domain'; // Normalize: drop scheme, leading www, trailing slash, anything after first slash/space var host = raw.replace(/^https?:\/\//i,'').replace(/^www\./i,'').split(/[\/\?#\s]/)[0].toLowerCase(); if (!host || host.indexOf('.') === -1) { return; } e.preventDefault(); // Build hidden form and submit it (POST so analyzer can read $_POST['url']) var hf = $('<form>').attr({method:'POST', action: endpoint}).css('display','none'); hf.append($('<input>').attr({type:'hidden', name:'url', value: host})); $('body').append(hf); hf[0].submit(); }); $('.content_toggle').click(function(){ $('.content_block').toggleClass('hide'); if ($('.content_block').hasClass('hide')) { $('.content_toggle').html('Leer más'); } else { $('.content_toggle').html('Colapsar'); } return false; }); $('.load-more').click(function () { var button = $(this); var link = $(this).data('cat'); var page = $(this).data('page'); var count = page + 1; $.ajax({ type: "GET", url: 'https://seo.computer/es/' + link +'?page=' + page, success: function(response) { if (response.html === ''){ button.fadeOut('slow'); } else { $('#' + link + '_results').append(response.html); button.data('page', count); } }, error: function(request, status, error) { console.log(request); } }); }); $('#languageForm').on('submit', function(e) { e.preventDefault(); $.ajax({ type: 'POST', url: 'https://seo.computer/change-language', data: $('#languageForm').serialize(), success: function(data) { if (data.message === true) { // Обновите URL с новым языком var currentUrl = window.location.href; var split = currentUrl.split('/'); split[3] = data.lang; var newUrl = split.join('/'); if (currentUrl === newUrl) { window.location = '/' + data.lang + '/'; } else { window.location = newUrl; } } } }); }); $('#search').on('input', function(e) { e.preventDefault(); var query = $(this).val(); $.ajax({ type: 'GET', url: 'https://seo.computer/search', data: { query: query, locale: 'es' }, success: function(data) { var results = $('#cites'); results.empty(); if (data.length > 0) { data.forEach(function(city) { results.append($('<a class="col text-decoration-none text-dark">').text(city.prepositional).attr('href', 'https://' + city.slug + '.seo.computer/es')); }); } else { results.html('<div class="col"><span>No se han encontrado resultados.</span></div>'); } } }); }); }); </script> <script defer async> (function(){ async function hrefifyLinks(){ let linksnh = []; while (linksnh.length < 2) { linksnh = [...document.querySelectorAll('a')].filter(v=>v.getAttribute('href')===null); if (linksnh.length < 2) { await new Promise(r=>setTimeout(r,500)); } } for (let l of linksnh) {l.href = '#';} } hrefifyLinks(); })(); </script> </body> </html>