Fundamentos de JavaScript SEO para su sitio: Cómo proporcionar visibilidad en Google

Fundamentos de JavaScript SEO para su sitio: Cómo proporcionar visibilidad en Google

¿Ha pensado que los problemas de JavaScript pueden interferir con su sitio o contenido para mostrar en los resultados de la búsqueda de Google? En este manual, explicaremos cómo resolver los problemas de JavaScript para que su sitio esté disponible para la indexación en el motor de búsqueda.

JavaScript juega un papel importante en el desarrollo web, proporcionando muchas funciones que convierten el sitio en una plataforma completa para aplicaciones. Hacer que su proyecto JavaScript esté disponible para una búsqueda en Google es una oportunidad para atraer nuevos usuarios y devolver a los antiguos que buscan su contenido.

A pesar del hecho de que Google usa el motor de cromo moderno para procesar JavaScript, hay varias cosas que deberían optimizarse para mejorar la visibilidad en el motor de búsqueda.

Cómo Google procesa JavaScript en su sitio

Google pasa a través de tres etapas clave para procesar páginas web de JavaScript:

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

Googlebot pone páginas en la cola para Kraling y Rendering. Esto puede llevar algún tiempo, ya que no siempre es obvio cuando la página se procesa en cada una de las etapas. Con Crailing, GoogleBot hace verificaciones HTTP y verifica el archivo robots.txt. Si la URL está bloqueada, GoogleBot la pierde sin realizar una renderización.

Cómo configurar los titulares únicos y las metadescripciones para su sitio de Google

Los elementos únicos e informativos de y las metadescripciones ayudan a los usuarios a determinar rápidamente qué resultado será los más relevantes para su solicitud en Google.</p><H2>Cómo escribir un código compatible con Google para su sitio</H2><p>Los navegadores ofrecen muchas API, y JavaScript es un lenguaje que se está desarrollando constantemente. Para que su código funcione con Google, siga las recomendaciones para eliminar los errores de JavaScript.</p><H2>Usando los estados HTTP correctos para su sitio de Google</H2><p>GoogleBot utiliza estados HTTP para determinar qué salió mal durante el crowring. Si la página no puede ser indexada o disponible, envíe el código de estado correcto, por ejemplo, 404 o 401.</p><H3>Evite los errores "Soft 404" en su sitio de Google</H3><p>Para aplicaciones de una página que implementan enrutamiento en el lado del cliente, es muy importante usar los códigos de estado correctamente. Use JavaScript Redirect para un error con un error, por ejemplo:</p><pre> fetch(`/api/products/${productId}`).then(response => response.json()).then(product => { if (product.exists) { showProductDetails(product); // отображает информацию о продукте } else { window.location.href = '/not-found'; // перенаправление на страницу 404 } }); </pre><H2>Uso del historial de API en lugar de fragmentos para su sitio de Google</H2><p>Google puede encontrar sus enlaces si están en <a> elementos con el atributo HREF. Para aplicaciones de una página, use el historial de API para enrutar entre diferentes páginas de su aplicación web.</p><H2>Implementación adecuada de la etiqueta rel = "canonical" en su sitio para Google</H2><p>Puede introducir la etiqueta Rel = "Canonical" usando JavaScript para indicar qué versión de la página debe indexarse. Sin embargo, tenga cuidado para que no haya enlaces duplicados Rel = "Canonical" en la página.</p><H2>Uso de Robots Meta Tags en su sitio para Google</H2><p>Puede usar la meta-etiqueta de los robots para prohibir la indexación de la página o los siguientes enlaces. Por ejemplo, para bloquear la indexación, agregue la siguiente meta-etiqueta:</p><pre> <meta name="robots" content="noindex, nofollow"> </pre><p>Es importante recordar que si Google ve noindex antes de la representación de JavaScript, se perderá esta página. Si desea que se indexe la página, no use noindex en el código fuente.</p><H2>Uso de almacenamiento en caché a largo plazo para su sitio de Google</H2><p>GoogleBot usa activamente un caché para reducir la cantidad de solicitudes y ahorrar recursos. Use la estrategia de almacenamiento en caché teniendo en cuenta el cambio de contenido, por ejemplo, agregando montos de control a los nombres de los archivos.</p><H2>Uso de datos estructurados en su sitio web de Google</H2><p>Si usa datos estructurados en su sitio, puede generar JSON-LD usando JavaScript e introducirlos en la página. Sin embargo, asegúrese de que su implementación no esté equivocada.</p><H2>Siguiendo las mejores prácticas para los componentes web en su sitio web de Google</H2><p>Google admite componentes web. Sin embargo, solo puede ver el contenido que se muestra en la representación. Si usa DOM's Shadow o Light DOM, asegúrese de que Google pueda ver todo el contenido.</p><H2>Corrección de imágenes y carga de contenido perezoso en su sitio en Google</H2><p>Las imágenes pueden tomar mucho tráfico y reducir la velocidad de la carga de páginas. Aplique la carga perezosa para que las imágenes se carguen solo cuando el usuario se acerca a ellas. Asegúrese de que su pereza sea compatible con SEO, siguiendo las recomendaciones sobre este tema.</p><H2>Diseño, teniendo en cuenta la disponibilidad de su sitio en Google</H2><p>Al crear su sitio, piense no solo sobre los motores de búsqueda, sino también sobre los usuarios, incluidas las personas con necesidades especiales, como lectores de pantalla o dispositivos móviles menos potentes. Esto lo ayudará a crear un sitio que estará disponible y conveniente para todos.</p><p>Si tiene preguntas sobre la optimización de JavaScript para su sitio o necesita establecer SEO, comuníquese con el equipo de SEO.COMPUTER. ¡Estamos felices de ayudar!</p><p>Detalles de contacto: <strong>info@seo.computer</strong>, <strong>WhatsApp: +79202044461</strong></p><p>ID 71</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="dlwIDEa5cqdNQ9ZiBtxoZUTgzyc9keHp1jYfgj4w" 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 para su sitio: Cómo proporcionar visibilidad en Google en Moscú" title="SEO Computer Fundamentos de JavaScript SEO para su sitio: Cómo proporcionar visibilidad 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-10071.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 para su sitio: Cómo proporcionar visibilidad en Google en Moscú" title="dejar una solicitud Fundamentos de JavaScript SEO para su sitio: Cómo proporcionar visibilidad 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="dlwIDEa5cqdNQ9ZiBtxoZUTgzyc9keHp1jYfgj4w" 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="dlwIDEa5cqdNQ9ZiBtxoZUTgzyc9keHp1jYfgj4w" 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="en" >Inglés (en)</option> <option value="it" >italiano (it)</option> <option value="nl" >Holandés (nl)</option> <option value="pl" >Polaco (pl)</option> <option value="de" >Alemán (de)</option> <option value="tr" >turco (tr)</option> <option value="fr" >Francés (fr)</option> <option value="jp" >japonés (jp)</option> <option value="id" >indonesio (id)</option> <option value="pt" >portugués (pt)</option> <option value="ru" >ruso (ru)</option> <option value="es" selected >Español (es)</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 para su sitio: Cómo proporcionar visibilidad en Google en Moscú" title="Enviado correctamente Fundamentos de JavaScript SEO para su sitio: Cómo proporcionar visibilidad 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="dlwIDEa5cqdNQ9ZiBtxoZUTgzyc9keHp1jYfgj4w" 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 para su sitio: Cómo proporcionar visibilidad 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 para su sitio: Cómo proporcionar visibilidad en Google en Moscú" title="escribir a telegram Fundamentos de JavaScript SEO para su sitio: Cómo proporcionar visibilidad 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 para su sitio: Cómo proporcionar visibilidad 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 para su sitio: Cómo proporcionar visibilidad en Google en Moscú" title="escribir a whatsapp Fundamentos de JavaScript SEO para su sitio: Cómo proporcionar visibilidad 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 para su sitio: Cómo proporcionar visibilidad en Google en Moscú" title="Top 100 Fundamentos de JavaScript SEO para su sitio: Cómo proporcionar visibilidad 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>