Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google

Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google

Do you suspect that problems with JavaScript can block the display of your content in the Google search engine? Find out how to eliminate the problems associated with JavaScript using our guide to eliminate problems.

JavaScript is an important part of the web platform, since it provides many functions that turn the web into a powerful application platform. To make your web applications using JavaScript available in the Google search engine can help you attract new users and return the existing ones when they look for content that your web application offers.

Although Google Search launches JavaScript using the current version of Chromium, there are several things that can be optimized.

This leadership describes how Google Search processes JavaScript and the best practices to improve the visibility of the JavaScript applications of your site in Google.

How Google processes JavaScript on your Google website

Google processes the JavaScript application of your site in three main stages:

  • CRAWING (CRAWLING)
  • Rendering (Rendering)
  • Indexing (indexing)

Googlebot puts pages in the queue for kraling and rendering. Sometimes it is not obvious when the page awaits Kraling, and when rendering. When Googlebot extracts the URL from the crowring line, he first checks whether the scan is allowed. Googlebot reads the Robots.txt file.

If the page is blocked for kraling, Googlebot misses its request, and Google will not render JavaScript on the blocked pages of your site.

JavaScript optimization to search for your site in Google

Sometimes the pages of JavaScript applications use the App shall model, where the initial does not contain the contents, and Google must perform JavaScript to see the actual content that generates JavaScript.

Googlebot puts all the pages in the rendering line, if only the Robots methag or the heading does not indicate that the page should not be indexed. The page may remain in line for a few seconds, but this can take more time. After Google resources allow, the page renders with the help of the headless Chromium and JavaScript is performed.

How to set unique headlines and meta-descriptions for your site in Google

Unique and descriptive elements of and meta-descriptions help users quickly choose the best result for their goal in the search. You can use JavaScript to set or change the meta-description, as well as an element of <bitle>.</p><H3>Make the code compatible with Google for your site</H3><p>Browsers offer many APIs, and JavaScript is a rapidly developing language. Google has restrictions on which API and JavaScript capabilities it supports. To make sure your code is compatible with Google, follow our recommendations to eliminate problems with JavaScript.</p><H2>How to use HTTP status codes for your Google site</H2><p>Googlebot uses HTTP status codes to determine what has gone wrong when crowing the page of your site.</p><p>To inform Googlebot that the page cannot be scanned or indexed, use understandable status codes such as 404 for not found pages or 401 for pages protected by password.</p><H3>How to avoid Soft 404 errors in single -page applications (SPA)</H3><p>In one -page applications with client rendering, routing is often implemented using client routing. In this case, the use of correct HTTP status codes can be impossible or inappropriate. To avoid Soft 404 errors when using customer rendering and roaring, use the following strategies:</p><ul><li>Use JavaScript redirect to the URL, for which the server meets with code 404 (for example, /not-Found).</li><li>Add the <meta name = "Robots" Content = "Noindex"> on pages with errors using JavaScript.</li></ul><H2>Using History API for your Google site</H2><p>Google can find your links only in <a> elements with an href attribute.</p><p>For one-page applications with client rendering, use the History API to implement routing between different ideas of your web application. Make sure Googlebot can process and extract your URLs without using URL fragments to download different content.</p><H2>The correct implementation of the tag Rel = "Canonical" for your site in Google</H2><p>Although it is not recommended to use JavaScript to introduce the tag Rel = "Canonical", this is possible. Google Search will find the entered canonical URL when rendering the page.</p><H2>How to use Robots metathes for your Google site properly</H2><p>You can prevent page indexing or following links through the Robots methag. For example, adding the next metatheg to the beginning of the page, you can block the indexation of the page in Google:</p><p><meta name = "Robots" conte = "noindex, nofollow"></p><p>The use of JavaScript to add Robots methag to the page or changes its contents is possible, but it is important to remember that Google may not renders or index the page if the NOindex tag is already present in the page code.</p><H2>Using long -term caching for your Google site</H2><p>Googlebot is actively caching pages to reduce network requests and use of resources. To avoid problems with the outdated JavaScript or CSS resources, use the Fingerprinting strategy to create unique contents based.</p><H2>How to use structured data on your Google website</H2><p>When using structured data on the pages of your site, you can use JavaScript to generate JSON-LD and implement it on a page. Make sure you have tested your implementation to avoid possible problems.</p><H2>How to follow the best practices for web components on your Google website</H2><p>Google supports web components. When rendering the Google page "flatters" the contents of Shadow Dom and Light Dom. This means that Google can only see content that is visible in the lean. To make sure that Google can see your content, use the Rich Results Test tool or the URL check tool and see the lean.</p><H2>Correction of images and lazy content loading for your site in Google</H2><p>Images can greatly load the throughput and affect performance. A good strategy is the use of lazy loading to load images only when the user is going to see them. Make sure your implementation of lazy loading corresponds to Google's recommendations.</p><H2>How to design your site for accessibility in Google</H2><p>Create pages for users, not just for search engines. When you are developing a site, take into account the needs of your users, including those who may not use browsers supporting JavaScript (for example, people who use the programs for reading from the screen or less powerful mobile devices).</p><p>One of the simple ways to test the availability of the site is to view it in a browser with a disconnected JavaScript or use a text browser, such as Lynx. Viewing the site in text mode also helps to identify another content that can be difficult for Google, for example, a text built into the image.</p><p>For any issues related to the SEO of your site, you can contact the SEO companion <strong>CEO</strong> By e -mail <a href="mailto:info@seo.computer">info@seo.computer</a> or through WhatsApp by number +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">Send a request and we will provide a consultation on SEO promotion of your website</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="9leCWeOu87Q3hJImbvMNPMoaG7qwGCW8YGd0wnn7" autocomplete="off"> <div class="col-12 col-xl-3"> <input type="text" name="name" class="form-control form-padding rounded-5" placeholder="your name" required=""> </div> <div class="col-12 col-xl-3"> <input type="tel" name="phone" class="form-control form-padding rounded-5" placeholder="Phone number" 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">Send</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">By submitting an application, you agree to the privacy policy</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/en"> <img src="https://seo.computer/assets/svg/seo_logo.svg" alt="SEO Computer Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google in Moscow" title="SEO Computer Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google in Moscow" 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">Internet Marketing</li> <li>Opening hours: <span class="workhours" itemprop="openingHours" datetime="Mo-Su">around the clock</span></li> <li class="norender"> <span itemprop="priceRange" class="pricerange">from 200 USD</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">Moscow</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">Menu</div> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="#tarifs" class="nav-link p-0 color-bfbfbf" title="SEO Tariffs">SEO Tariffs</a></li> <li class="nav-item mb-2"><a href="#reviews" class="nav-link p-0 color-bfbfbf" title="SEO Reviews">SEO Reviews</a></li> <li class="nav-item mb-2"><a href="#quiz" class="nav-link p-0 color-bfbfbf" title="SEO Calculator">SEO Calculator</a></li> <li class="nav-item mb-2"><a href="#sales" class="nav-link p-0 color-bfbfbf" title="SEO Promotions">SEO Promotions</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/en/contact" class="nav-link p-0 color-bfbfbf" title="Contacts">SEO Contacts</a></li> </ul> </div> <div class="col-12 col-xl-3 col-md-6"> <div class="fw-500 fs-20 mb-2">Services</div> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="https://seo.computer/en/business" class="nav-link p-0 color-bfbfbf" title="Businesses">SEO for businesses</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/en/type-sites" class="nav-link p-0 color-bfbfbf" title="Types of websites">SEO for types of websites</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/en/cms" class="nav-link p-0 color-bfbfbf" title="CMS systems">SEO for CMS systems</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/en/languages" class="nav-link p-0 color-bfbfbf" title="Languages">SEO for languages</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/en/engines" class="nav-link p-0 color-bfbfbf" title="Search engines">SEO for search engines</a></li> </ul> </div> <div class="col-12 col-xl-3 col-md-6"> <div class="fw-500 fs-20 mb-2">Social network</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>This website is for informational purposes only and is not a public offer. To obtain accurate information about the services provided and their costs, please contact the company’s managers.</p> <a class="text-decoration-none color-bfbfbf" href="https://seo.computer/en/policy">Privacy Policy</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">Leave a request</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="Leave a request Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google in Moscow" title="Leave a request Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google in Moscow"> <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="9leCWeOu87Q3hJImbvMNPMoaG7qwGCW8YGd0wnn7" autocomplete="off"> <div class="modal-body"> <label class="fs-5 text-center fw-bold">Leave a request and our SEO specialist will contact you soon</label> <div class="row"> <div class="col-12"> <input type="text" name="name" class="form-control form-padding my-2" placeholder="your name" required> </div> <div class="col-12"> <input type="tel" name="phone" class="form-control form-padding my-2" placeholder="Phone number" required> </div> </div> </div> <div class="modal-footer justify-content-center"> <button class="btn rounded-5 btn-primary w-100 form-padding" type="submit">Send</button> <a href="policy.html" class="text-decoration-none text-dark text-center fs-14">By submitting data, you agree to the privacy policy</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">Choose language</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="9leCWeOu87Q3hJImbvMNPMoaG7qwGCW8YGd0wnn7" autocomplete="off"> <select class="form-select mb-2" aria-label="Choose language" name="language" id="language"> <option selected>Choose language</option> <option value="cn" >Chinese (simplified) (cn)</option> <option value="nl" >Dutch (nl)</option> <option value="en" selected >English (en)</option> <option value="fr" >French (fr)</option> <option value="de" >German (de)</option> <option value="id" >Indonesian (id)</option> <option value="it" >Italian (it)</option> <option value="jp" >Japanese (jp)</option> <option value="pl" >Polish (pl)</option> <option value="pt" >Portuguese (pt)</option> <option value="ru" >Russian (ru)</option> <option value="es" >Spanish (es)</option> <option value="tr" >Turkish (tr)</option> </select> <button type="submit" class="btn btn-primary w-100">Change</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="Sent successfully Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google in Moscow" title="Sent successfully Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google in Moscow" width="160" height="144" class="mb-5"> <div class="h4" style="color: #000;">Sent successfully!</div> <p style="color: #000;">Thank you, your application has been sent successfully! We will contact you shortly.</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">Leave a request</span> <p class="text-muted mt-1">And our SEO specialist will contact you in the near future</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="9leCWeOu87Q3hJImbvMNPMoaG7qwGCW8YGd0wnn7" autocomplete="off"> <div class="modal__contents_input"> <input type="text" class="form-control" placeholder="your name" name="name" id="name" required /> </div> <div class="modal__contents_input"> <input type="tel" class="form-control phone_input" placeholder="Phone number" id="phone" name="phone" required /> </div> <div class="modal__contents_input"> <input type="text" class="form-control" placeholder="Your website address" name="website" id="website" required /> </div> <button type="submit" class="button desctop">Send</button> <button type="submit" class="button mobile">Send</button> </form> <p class="policy mt-3">By sending an application, you agree <a href="https://seo.computer/ru/policy">With a policy of confidentiality</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">Select a city</div> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></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="Enter the name of the city..."> </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="Write to telegram" title="Write to telegram Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google in Moscow" 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="Write to telegram Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google in Moscow" title="Write to telegram Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google in Moscow"> </button> <button class="shareButton wt open" data-bs-toggle="modal" data-bs-target="#SocialModal" data-bs-content="Write to whatsapp" title="Write to whatsapp Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google in Moscow" 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="Write to whatsapp Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google in Moscow" title="Write to whatsapp Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google in Moscow"> </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">Connect with us</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="#">Write</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 Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google in Moscow" title="Top 100 Fundamentals of JavaScript Seo: how to improve the visibility of your site in Google in Moscow" /> </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('Read more'); } else { $('.content_toggle').html('Collapse'); } 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/en/' + 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: 'en' }, 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/en')); }); } else { results.html('<div class="col"><span>No results found.</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>