Индексирование страниц с JavaScript β
С помощью Вебмастера вы можете управлять индексированием страниц сайта, на которых контент отображается через JavaScript — указать, следует ли роботу выполнять JavaScript на страницах при обходе вашего сайта. Это может быть полезно, если на сайте не реализован SSR (Server-Side Rendering) или пререндеринг.
Примечание
При выполнении JavaScript-кода робот может создавать дополнительную нагрузку на ваш сервер.
Управление индексированием
-
Перейдите в Вебмастер.
-
Перейдите на страницу Индексирование → Рендеринг страниц JavaScriptβ.
-
Выберите одну из опций. По умолчанию включена опция На усмотрение робота. Это значит, что робот самостоятельно определит, выполнять ли JavaScript-код на страницах сайта. Например, для принятия решения он может оценить качество и полноту контента на странице с JavaScript и без и загрузить ту, которая может оказаться более полезной для посетителя сайта.
Совет
Запретите рендеринг, если на сайте реализован SSR (Server-Side Rendering) или пререндеринг.
Расширенные настройки рендеринга
Если на вашем сайте контент загружается с задержкой, вы можете сообщить об этом Яндексу с помощью специального кода JavaScript.
На страницах сайта, где контент загружается с задержкой, создайте объект window.YandexRotorSetting
таким образом, чтобы он обрабатывался до события DomContentLoaded. Внутри этого объекта можно указать параметры, на которые будет реагировать робот Яндекса при обработке страницы. Параметры приведены в таблице ниже.
Пример кода:
<script>
window.YandexRotorSettings = {
WaiterEnabled: true;
FailOnTimeout: false;
NoJsRedirectsToMain:true
}
</script>
Параметр |
Тип |
Описание |
|
Boolean |
Возможные значения:
При значении
Подробное описание состояний ниже. |
|
Boolean |
Возможные значения:
|
|
Boolean |
Возможные значения:
|
|
Boolean |
Возможные значения:
Тайм-аут можно задать в пользовательских настройках при |
|
Boolean |
Возможные значения:
Используйте параметр, если на вашем сайте реализован вызов Робот Яндекса воспринимает вызов Как определить подмену контентаВы можете заметить, что в результатах поиска описание главной страницы меняется на описание внутренних или атрибут rel="canonical" меняется на атрибут внутренних страниц. |
Примеры реализации JavaScript-кода
-
Дождаться загрузки элемента с нужным CSS-селектором
<!-- Хотим дождаться элемента с классом '.observable-class'. Он будет создан через 10 секунд ---> <!-- Этот код должен быть вставлен прямо в html ---> <script> window.YandexRotorSettings = { WaiterEnabled: true } </script> <!-- Этот код можно загружать через <script src="...">--> <script> var intervalId = setInterval(function() { if (document.querySelectorAll('.observable-class').length > 0) { window.YandexRotorSettings.IsLoaded = true; clearInterval(intervalId); } }, 1000); </script> <!-- Скрипт для примера. Создаем элемент с нужным классом --> <script> setTimeout(function() { var div = document.createElement('div'); div.classList.add('observable-class'); div.innerText = "These are the droids you're looking for."; document.body.appendChild(div); }, 10000); </script>
Подождать 5 секунд после загрузки
<!-- Рекомендуем полагаться на ожидание конкретных элементов. Загрузка ресурсов роботом может занимать неопределенное время ---> <!-- Этот код должен быть вставлен прямо в html ---> <script> window.YandexRotorSettings = { WaiterEnabled: true } </script> <!-- Этот код можно загружать через <script src="...">--> <script> setTimeout(function() { window.YandexRotorSettings.IsLoaded = true; }, 5000); </script>
Примеры реализации функции внутри isLoaded
-
Проверить состояние страницы
<!--В примере проверяем, что на странице размещено больше 10 элементов div--> window.YandexRotorSettings = { WaiterEnabled: true, IsLoaded: function() { return document.body.querySelectorAll('div').length > 10; } };
Дождаться загрузки контента в элементе title
window.YandexRotorSettings = { WaiterEnabled: true, IsLoaded: function() { return document.title.length > 0; } }