---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://yandex.ru/support/adfox/en/monetization/script-features.md
  - https://yandex.ru/support/adfox/ru/monetization/script-features.md
  - href: ru/monetization/script-features.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/support/adfox/ru/llms.txt

# Дополнительные возможности скрипта

## Callback-функция onBidsReceived {#callback}

В методе `YaHeaderBiddingSettings` доступна callback-функция `onBidsReceived`, которая вызывается в момент окончания опроса всех монетизаторов и получения от них ставок.

В качестве аргумента передаются ставки, полученные с последнего запроса к монетизаторам в формате: массив с объектом `Bids`.

[Новый запрос](*Новый запрос) к монетизаторам и его завершение вызовет эту callback-функцию повторно.


{% cut "Пример добавления onBidsReceived" %}


```javascript
window.YaHeaderBiddingSettings = {
  biddersMap: adfoxBiddersMap,
  adUnits: adUnits,
  timeout: userTimeout,
  callbacks: {
    onBidsReceived: (bids) => {
      console.log('---> PUBLIC CALLBACK onBidsReceived: ', bids);
    }
  }
};
```


{% endcut %}



## Решение для сайтов с «бесконечной» прокруткой {#endless-scroll}

На сайтах с бесконечной прокруткой новые части контента и рекламные места подгружаются без перезагрузки страницы. Если на страницах такого сайта используется Header Bidding, то для новых рекламных мест аукцион разыгрываться не будет — ставки были сделаны при первой загрузке и уже использованы в подборе рекламы.

Чтобы описать новый набор монетизаторов для новых рекламных мест, добавленных по мере загрузки контента, используйте метод `window.Ya.headerBidding.pushAdUnits(AdUnit[])`. Вместо [AdUnit[]](https://yandex.ru/support/adfox/ru/monetization/script-setup.md#create) нужно указать массив объектов с информацией, к каким монетизаторам делать запрос ставок для новых добавленных рекламных мест.

1. Перед вызовом метода для нового рекламного места добавьте инициализацию новых очередей. Для этого в элементе `head` замените код загрузчика context.js:

    #| 
    || **Старый код** | **Новый код** || 
    || 
      ```html
      
      
      ``` 
    |  
      ```html
      
      
      ```
    ||
    |#.
    
1. Добавьте метод `pushAdUnits` в код блока. Обратите внимание, что:
    - для нового баннерного места метод `pushAdUnits` необходимо вызывать до `adfoxCode.create`;
    - в описании объектов `containerId` элементов должен отличаться от ранее сохраненных в конфигурационном скрипте, при этом сам конфигурационный скрипт в `head` страницы изменять не нужно.
    


{% cut "Пример итогового кода для рекламного места" %}


```html
<div id="adfox_15218"></div>

```


{% endcut %}



## Подключение дополнительных таргетингов через Adfox HB {#targetings-adfox-hb}

<!-- source: ru/_includes/monetization/script-features/targetings-adfox.md -->
Если в аккаунте монетизатора, работающего через Adfox HB, настроены [дополнительные таргетинги](https://yandex.ru/support/adfox/ru/targeting/puid.md), добавьте в код вставки параметры `puidN` (где `N` — номер характеристики от 1 до 63) вместе со значениями таргетирования. Параметры `puid` добавляются в объект `params` в формате `name: value`, где:

- `name` — название параметра (`puidN`);
- `value` — значение параметра.


{% cut "Пример конфигурационного скрипта с монетизатором, работающим через Adfox HB, и добавленными параметрами puid" %}


```javascript
window.YaHeaderBiddingSettings = {
  biddersMap: { 'adfox_example': '957356' },
  adUnits: [{
    code: 'adfox_154875622348837699',
    bids: [{
      bidder: 'adfox_example',
      params: {
        pp: 'g',
        ps: 'cqmv',
        p2: 'fqnq',
        puid1: 'woman',
        puid2: '16:17:18:19',
        puid3: 'green'
      }
    }]
  }],
  timeout: 500
};
```


{% endcut %}
<!-- endsource: ru/_includes/monetization/script-features/targetings-adfox.md -->


## Проверка ставок монетизаторов {#customer-bid-check}

Запросы ставок к монетизаторам могут быть неоднократно отправлены в нескольких случаях:

- при загрузке страницы — отправляются запросы ко всем монетизаторам, указанным в конфигурационном скрипте;
- при перезагрузке рекламного места — с помощью `reload()` происходит повторный опрос монетизаторов, которые относятся только к перезагружаемому объявлению;
- при вызове [метода `pushAdUnits()`](https://yandex.ru/support/adfox/ru/monetization/script-features.md#endless-scroll) — отправляется запрос только по указанным в нем монетизаторам.

Чтобы получить ставки с последнего опроса монетизаторов, воспользуйтесь [рекламной консолью](https://yandex.ru/support/adfox/ru/support/yan_console.md) или используйте метод `getLastBidsReceived` в консоли браузера:

```javascript
window.Ya.headerBidding.getLastBidsReceived();
```

В ответе приходит массив, заполненный объектами `Bid` для каждой пары «рекламное место + монетизатор». Объект может содержать только одно из полей:

- `banner` — при ответе от монетизатора обычным баннером;
- `native` — при ответе от монетизатора нативным баннером;
- `error` — при ошибке.


{% cut "Пример вызова метода в консоли браузера" %}

![](../_images/monetization/HB_console.png)

```javascript
interface Bid {
    adapterName: string; // имя монетизатора
    containerId: string; // идентификатор контейнера
    campaignId: number; // идентификатор рекламной кампании в Adfox
    requestDuration: number; // длительность запроса
    cost?: {
        currency: string; // валюта "RUB"/"USD"
        cpm: number; // ставка, которая пришла с сервера за 1000 показов
    },
    banner?: {
        src: string; // содержимое баннера
    },
    size?: {
        width: number; // ширина в px
        height: number; // высота в px
    },
    error?: {
        code: number; // код ошибки
        message: string; // имя ошибки
    },
    native?: {
        nativePayload: any; // объект с содержимым для нативного показа
    }
};
```


{% endcut %}


**Коды ошибок**:

**Код ошибки** | **Значение**
----- | -----
`0` | Неизвестная ошибка.
`1` | Отсутствие ставки или ответа.
`2` | Некорректный ответ.
`3` | Таймаут.
`4` | Ошибка HTTP-протокола.
`5` | Некорректные пользовательские данные в конфигурационном скрипте.
`6` | Некорректные настройки монетизатора.
`7` | Монетизатор прислал ID контейнера, отличный от ID в запросе.
`8` | Монетизатор прислал корректный ответ без статуса.
`9` | В ответе монетизатора отсутствует `codeType` или он некорректный.


## Вызов cookie-sync пикселей при запросе к монетизатору {#cookie-sync-call}

Со страницы, на которой вы разместили код, можно вызывать cookie-sync пиксели параллельно с запросом. Ссылку на пиксель предоставляет монетизатор.

Чтобы вызвать cookie-sync пиксель:

1. Объявите переменную и пропишите ссылку на пиксель. Если ссылок несколько, добавьте в массив `pixels` в виде строки через запятую.
    
    ```javascript
    var syncPixels = [{
        bidder: 'sape',
        pixels: ['https://ssp-rtb.sape.ru/rmatch/.....']
      }]
    ```
    
1. В секцию `YaHeaderBiddingSettings` добавьте вызов пикселей:
    
    ```javascript
    syncPixels: syncPixels
    ```
    


{% cut "Пример конфигурационного скрипта с cookie-sync пикселем для монетизатора Sape" %}


```html
ru
```

 
{% endcut %}

## Отключение подложки Adfox для полноэкранного баннера {#banner-backing}

Если в коде вставки Adfox настроен показ [полноэкранного баннера](https://yandex.ru/support/adfox/ru/ad-inventory/codes/code.md#fullscreen) и монетизатор хочет отрисовать подложку на баннере самостоятельно, он может вернуть в ответе `disableFullscreen: true`. Этот параметр отключит отрисовку подложки на стороне кода Adfox, и на баннере отобразится собственная подложка монетизатора.

<!-- source: ru/_includes/feedback.md -->
## Обратиться в службу поддержки



<a href="https://yandex.ru/chat/#/user/48724607-a983-9631-79e6-aad155a88db3"> <!--ссылка, куда ведет кнопка. Если внутренняя ссылка, пишем без .md и .html --> 
  <span class="button">Написать в чат</span> <!--текст на кнопке--> 
</a>

<a href="ru/form"> <!--ссылка, куда ведет кнопка. Если внутренняя ссылка, пишем без .md и .html --> 
  <span class="button">Написать письмо</span> <!--текст на кнопке--> 
</a>



<!-- source: ru/_includes/styles/button.md -->

<!-- endsource: ru/_includes/styles/button.md -->
<!-- endsource: ru/_includes/feedback.md -->

[*Новый запрос]: Новые запросы к монетизаторам будут отправлены при перезагрузке рекламного места или вызове метода `pushAdUnits`.