Индексирование страниц с JavaScriptβ

С помощью Вебмастера вы можете управлять индексированием страниц сайта, на которых контент отображается через JavaScript — указать, следует ли роботу выполнять JavaScript на страницах при обходе вашего сайта. Это может быть полезно, если на сайте не реализован SSR (Server-Side Rendering) или пререндеринг.

Примечание. При выполнении JavaScript-кода робот может создавать дополнительную нагрузку на ваш сервер.
  1. Управление индексированием
  2. Расширенные настройки рендеринга

Управление индексированием

  1. Перейдите в Вебмастер.
  2. Перейдите на страницу Индексирование → Рендеринг страниц JavaScriptβ.
  3. Выберите одну из опций. По умолчанию включена опция На усмотрение робота. Это значит, что робот самостоятельно определит, выполнять ли JavaScript-код на страницах сайта. Например, для принятия решения он может оценить качество и полноту контента на странице с JavaScript и без и загрузить ту, которая может оказаться более полезной для посетителя сайта.
    Совет. Запретите рендеринг, если на сайте реализован SSR (Server-Side Rendering) или пререндеринг.

Расширенные настройки рендеринга

Если на вашем сайте контент загружается с задержкой, вы можете сообщить об этом Яндексу с помощью специального кода JavaScript.

На страницах сайта, где контент загружается с задержкой, создайте объект window.YandexRotorSetting таким образом, чтобы он обрабатывался до события DomContentLoaded. Внутри этого объекта можно указать параметры, на которые будет реагировать робот Яндекса при обработке страницы. Параметры приведены в таблице ниже.

Пример кода:

<script>
    window.YandexRotorSettings = {
        WaiterEnabled: true;
        FailOnTimeout: false;
        NoJsRedirectsToMain:true
    }
</script>
Параметр Тип Описание
WaiterEnabled Boolean
Возможные значения:
  • true;
  • false.
При значении true возможна проверка состояний:
  • IsLoaded;
  • IsError.

Подробное описание состояний ниже.

IsLoaded Boolean
Возможные значения:
  • true — при условии выполнения события DomContentLoaded контент считается загруженным, содержимое страницы попадает в базу робота Яндекса.
  • false.
  • Произвольная функция. Примеры
IsError Boolean
Возможные значения:
  • true — загрузка контента считается ошибочной, содержимое страницы не обрабатывается роботом Яндекса;
  • false.

FailOnTimeout Boolean
Возможные значения:
  • true — по истечение тайм-аута страница не попадет в базу робота;
  • false — в базу попадет часть контента, которую робот успеет загрузить до истечения тайм-аута.

Тайм-аут можно задать в пользовательских настройках при WaiterEnabled: true.

NoJsRedirectsToMain Boolean
Возможные значения:
  • true — робот Яндекса проигнорирует редирект на главную страницу сайта;
  • false.

Используйте параметр, если на вашем сайте реализован вызов window.history.back(), например, при использовании History API.

Робот Яндекса воспринимает вызов window.history.back() как переход на главную страницу без изменения содержимого. В результате на главную страницу может попадать контент с других страниц.
Как определить подмену контента

Вы можете заметить, что в результатах поиска описание главной страницы меняется на описание внутренних или атрибут 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;
    }
}

Если страницы долгое время не попадают в результаты поиска или были исключены, а также если у вас есть другие вопросы об индексировании поддоменов сайта, заполните форму ниже: