Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google

Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google

Czy myślałeś, że problemy JavaScript mogą zakłócać Twoją witrynę lub treść, aby wyświetlić wyniki wyszukiwania Google? W tym podręczniku wyjaśnimy, jak rozwiązać problemy JavaScript, aby witryna stała się dostępna do indeksacji w wyszukiwarce.

JavaScript odgrywa ważną rolę w tworzeniu stron internetowych, zapewniając wiele funkcji, które zamieniają witrynę w pełnoprawną platformę do aplikacji. Aby Twój projekt JavaScript jest dostępny do wyszukiwania w Google, jest okazją do przyciągnięcia nowych użytkowników i zwrócenia starych, którzy szukają twoich treści.

Pomimo faktu, że Google używa nowoczesnego silnika chromu do przetwarzania JavaScript, istnieje kilka rzeczy, które należy zoptymalizować w celu poprawy widoczności w wyszukiwarce.

Jak Google przetwarza JavaScript w Twojej witrynie

Google przechodzi przez trzy kluczowe etapy przetwarzania stron internetowych JavaScript:

  • Pełzanie (pełzanie)
  • Rendering (rendering)
  • Indeksowanie (indeksowanie)

GoogleBot umieszcza strony w kolejce do Kraling i Rendering. Może to zająć trochę czasu, ponieważ nie zawsze jest to oczywiste, gdy strona jest przetwarzana na każdym z etapów. Wraz z krzywdą GoogleBot dokonuje kontroli HTTP i sprawdza plik robots.txt. Jeśli adres URL jest zablokowany, GoogleBot nie pomija go bez wykonywania renderowania.

Jak skonfigurować unikalne nagłówki i meta-dessyjne dla swojej witryny Google

Unikalne i pouczające elementy i meta-opisy pomagają użytkownikom szybko ustalić, który wynik będzie najważniejszy dla ich żądania w Google.</p><H2>Jak napisać kod kompatybilny z Google dla swojej witryny</H2><p>Przeglądarki oferują wiele interfejsów API, a JavaScript to język, który stale się rozwija. Aby Twój kod współpracował z Google, postępuj zgodnie z zaleceniami dotyczącymi eliminowania błędów JavaScript.</p><H2>Korzystanie z prawidłowych statusów HTTP dla Twojej witryny Google</H2><p>GoogleBot używa statusów HTTP, aby ustalić, co poszło nie tak podczas Crowring. Jeśli strona nie może być indeksowana lub dostępna, wyślij poprawny kod stanu, na przykład 404 lub 401.</p><H3>Unikaj błędów „Soft 404” na swojej stronie Google</H3><p>W przypadku jednej strony aplikacji, które implementują routing po stronie klienta, bardzo ważne jest prawidłowe użycie kodów stanu. Użyj przekierowania JavaScript, aby uzyskać błąd z błędem, na przykład:</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>Korzystanie z historii API zamiast fragmentów dla witryny Google</H2><p>Google może znaleźć twoje linki, jeśli są w elementach <a> z atrybutem HREF. W przypadku jednostronicowych aplikacji użyj historii API do routingu między różnymi stronami aplikacji internetowej.</p><H2>Właściwa implementacja tag rel = „Canonical” w Twojej witrynie dla Google</H2><p>Możesz wprowadzić znacznik rel = „Canonical” za pomocą JavaScript, aby wskazać, która wersja strony powinna być indeksowana. Uważaj jednak, aby na stronie nie ma duplikatów linków rel = „Canonical”.</p><H2>Korzystanie z metatagów robotów w Twojej witrynie dla Google</H2><p>Możesz użyć Meta-Tag Robots, aby zakazać indeksowania stron lub podążania za nią linków. Na przykład, aby zablokować indeksowanie, dodaj następującą meta-tag:</p><pre> <meta name="robots" content="noindex, nofollow"> </pre><p>Ważne jest, aby pamiętać, że jeśli Google zobaczy Noindex przed renderingiem JavaScript, przegapi tę stronę. Jeśli chcesz, aby strona była indeksowana, nie używaj Noindex w kodzie źródłowym.</p><H2>Korzystanie z długoterminowych buforowania dla Twojej witryny Google</H2><p>GoogleBot aktywnie używa pamięci podręcznej, aby zmniejszyć liczbę żądań i oszczędzać zasoby. Skorzystaj z strategii buforowania, na przykład pod uwagę zmianę treści, dodając kwoty kontrolne do nazw plików.</p><H2>Korzystanie z ustrukturyzowanych danych w Twojej witrynie Google</H2><p>Jeśli używasz danych ustrukturyzowanych w swojej witrynie, możesz generować JSON-LD za pomocą JavaScript i wprowadzić je na stronę. Upewnij się jednak, że twoja implementacja nie jest mylona.</p><H2>Przestrzeganie najlepszych praktyk dla komponentów internetowych w Twojej witrynie Google</H2><p>Google obsługuje komponenty internetowe. Jednak widzi tylko treść wyświetlaną podczas renderowania. Jeśli korzystasz z Shadow lub Light DOM, upewnij się, że Google może zobaczyć całą zawartość.</p><H2>Korekta obrazów i ładowanie leniwych treści w Twojej witrynie w Google</H2><p>Obrazy mogą przybierać dużo ruchu i spowolnić ładowanie stron. Zastosuj leniwe ładowanie, aby obrazy były ładowane tylko wtedy, gdy użytkownik się do nich zbliży. Upewnij się, że twoje lenistwo jest kompatybilne z SEO, zgodnie z zaleceniami na ten temat.</p><H2>Projektowanie, biorąc pod uwagę dostępność Twojej witryny w Google</H2><p>Tworząc witrynę, pomyśl nie tylko o wyszukiwarkach, ale także o użytkownikach, w tym osób o specjalnych potrzebach, takich jak czytniki ekranu lub mniej potężne urządzenia mobilne. Pomoże to utworzyć witrynę, która będzie dostępna i wygodna dla wszystkich.</p><p>Jeśli masz pytania dotyczące optymalizacji JavaScript dla swojej witryny lub musisz ustanowić SEO, skontaktuj się z zespołem SEO.computer. Cieszymy się, że możemy pomóc!</p><p>Dane kontaktowe: <strong>info@seo.computer</strong>W <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">Wyślij zapytanie, a my udzielimy konsultacji NA SEO promocja Twojej strony internetowej</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="SdJX7oPdXh1h7A8JIZGjPXY5gxzG0mHRYoUnuw4i" autocomplete="off"> <div class="col-12 col-xl-3"> <input type="text" name="name" class="form-control form-padding rounded-5" placeholder="Twoje imię" required=""> </div> <div class="col-12 col-xl-3"> <input type="tel" name="phone" class="form-control form-padding rounded-5" placeholder="Numer telefonu" 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">Wysłać</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">Wysyłając zgłoszenie zgadzasz się z polityką prywatności</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/pl"> <img src="https://seo.computer/assets/svg/seo_logo.svg" alt="SEO Computer Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google w Moskwie" title="SEO Computer Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google w Moskwie" 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">Marketing internetowy</li> <li>Godziny otwarcia: <span class="workhours" itemprop="openingHours" datetime="Mo-Su">całą dobę</span></li> <li class="norender"> <span itemprop="priceRange" class="pricerange">z 792 PLN</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">Moskwa</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 Taryfy">SEO Taryfy</a></li> <li class="nav-item mb-2"><a href="#reviews" class="nav-link p-0 color-bfbfbf" title="SEO Recenzje">SEO Recenzje</a></li> <li class="nav-item mb-2"><a href="#quiz" class="nav-link p-0 color-bfbfbf" title="SEO Kalkulator">SEO Kalkulator</a></li> <li class="nav-item mb-2"><a href="#sales" class="nav-link p-0 color-bfbfbf" title="SEO Promocje">SEO Promocje</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/pl/contact" class="nav-link p-0 color-bfbfbf" title="Łączność">SEO Łączność</a></li> </ul> </div> <div class="col-12 col-xl-3 col-md-6"> <div class="fw-500 fs-20 mb-2">Usługi</div> <ul class="nav flex-column"> <li class="nav-item mb-2"><a href="https://seo.computer/pl/business" class="nav-link p-0 color-bfbfbf" title="Biznes">SEO dla firm</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/pl/type-sites" class="nav-link p-0 color-bfbfbf" title="Rodzaje witryn">SEO dla typów witryn</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/pl/cms" class="nav-link p-0 color-bfbfbf" title="Systemy CMS">SEO dla CMS systemy</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/pl/languages" class="nav-link p-0 color-bfbfbf" title="Języki">SEO dla języków</a></li> <li class="nav-item mb-2"><a href="https://seo.computer/pl/engines" class="nav-link p-0 color-bfbfbf" title="Wyszukiwarki">SEO dla wyszukiwarek</a></li> </ul> </div> <div class="col-12 col-xl-3 col-md-6"> <div class="fw-500 fs-20 mb-2">Sieć społeczna</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>Niniejsza strona ma charakter wyłącznie informacyjny i nie stanowi oferty publicznej. W celu uzyskania dokładnych informacji na temat świadczonych usług i ich kosztów prosimy o kontakt z menadżerami firmy.</p> <a class="text-decoration-none color-bfbfbf" href="https://seo.computer/pl/policy">Polityka prywatności</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">Zostaw prośbę</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="Zostaw prośbę Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google w Moskwie" title="Zostaw prośbę Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google w Moskwie"> <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="SdJX7oPdXh1h7A8JIZGjPXY5gxzG0mHRYoUnuw4i" autocomplete="off"> <div class="modal-body"> <label class="fs-5 text-center fw-bold">Zostaw prośbę i nasze SEO specjalista wkrótce się z Tobą skontaktuje</label> <div class="row"> <div class="col-12"> <input type="text" name="name" class="form-control form-padding my-2" placeholder="Twoje imię" required> </div> <div class="col-12"> <input type="tel" name="phone" class="form-control form-padding my-2" placeholder="Numer telefonu" required> </div> </div> </div> <div class="modal-footer justify-content-center"> <button class="btn rounded-5 btn-primary w-100 form-padding" type="submit">Wysłać</button> <a href="policy.html" class="text-decoration-none text-dark text-center fs-14">Przesyłając dane zgadzasz się z polityką prywatności</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">Wybierz język</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="SdJX7oPdXh1h7A8JIZGjPXY5gxzG0mHRYoUnuw4i" autocomplete="off"> <select class="form-select mb-2" aria-label="Wybierz język" name="language" id="language"> <option selected>Wybierz język</option> <option value="en" >język angielski (en)</option> <option value="id" >indonezyjski (id)</option> <option value="es" >hiszpański (es)</option> <option value="it" >Włoski (it)</option> <option value="cn" >Uproszczony chiński) (cn)</option> <option value="de" >Niemiecki (de)</option> <option value="nl" >Holenderski (nl)</option> <option value="pl" selected >Polski (pl)</option> <option value="pt" >portugalski (pt)</option> <option value="ru" >Rosyjski (ru)</option> <option value="tr" >turecki (tr)</option> <option value="fr" >Francuski (fr)</option> <option value="jp" >język japoński (jp)</option> </select> <button type="submit" class="btn btn-primary w-100">Zmiana</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="Wysłano pomyślnie Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google w Moskwie" title="Wysłano pomyślnie Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google w Moskwie" width="160" height="144" class="mb-5"> <div class="h4" style="color: #000;">Wysłano pomyślnie!</div> <p style="color: #000;">Dziękujemy, Twoje zgłoszenie zostało pomyślnie wysłane! Skontaktujemy się z Tobą wkrótce.</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">Zostaw prośbę</span> <p class="text-muted mt-1">A nasz specjalista SEO skontaktuje się z Tobą w najbliższej przyszłości</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="SdJX7oPdXh1h7A8JIZGjPXY5gxzG0mHRYoUnuw4i" autocomplete="off"> <div class="modal__contents_input"> <input type="text" class="form-control" placeholder="Twoje imię" name="name" id="name" required /> </div> <div class="modal__contents_input"> <input type="tel" class="form-control phone_input" placeholder="Numer telefonu" id="phone" name="phone" required /> </div> <div class="modal__contents_input"> <input type="text" class="form-control" placeholder="Adres Twojej witryny" name="website" id="website" required /> </div> <button type="submit" class="button desctop">Wysłać</button> <button type="submit" class="button mobile">Wysłać</button> </form> <p class="policy mt-3">Wysyłając wniosek, zgadzasz się <a href="https://seo.computer/ru/policy">Z polityką poufności</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">Wybierz miasto</div> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Zamknąć"></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="Podaj nazwę miasta..."> </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="Napisz do telegram" title="Napisz do telegram Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google w Moskwie" 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="Napisz do telegram Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google w Moskwie" title="Napisz do telegram Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google w Moskwie"> </button> <button class="shareButton wt open" data-bs-toggle="modal" data-bs-target="#SocialModal" data-bs-content="Napisz do whatsapp" title="Napisz do whatsapp Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google w Moskwie" 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="Napisz do whatsapp Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google w Moskwie" title="Napisz do whatsapp Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google w Moskwie"> </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">Połącz się z nami</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="#">Pisać</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 Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google w Moskwie" title="Top 100 Podstawy JavaScript SEO dla Twojej witryny: Jak zapewnić widoczność w Google w Moskwie" /> </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('Czytaj więcej'); } else { $('.content_toggle').html('Zawalić się'); } 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/pl/' + 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: 'pl' }, 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/pl')); }); } else { results.html('<div class="col"><span>Nie znaleziono wyników.</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>