# JS: содержимое скриптов

> Тела всех скриптов страницы — внешних и встроенных, в том виде, в каком их выполнил браузер

Источник: https://docs.parreq.com/fetch-js/

`include=js` кладёт в ответ поле `js` — список объектов с телом каждого скрипта:
и внешних файлов, и встроенных в разметку.

**Цена:** +2 кредита к разметке, итого 3.

```python Python
from parreq import Parreq

client = Parreq("pr_ВАШКЛЮЧ")
res = client.fetch("https://developer.mozilla.org/en-US/", include=["js"])

for asset in res.js:
    origin = "встроенный" if asset.inline else asset.url
    print(asset.bytes, origin)
```

```javascript Node

const client = new Parreq({ apiKey: "pr_ВАШКЛЮЧ" });
const res = await client.fetch({ url: "https://developer.mozilla.org/en-US/", include: ["js"] });

for (const asset of res.js) {
  console.log(asset.bytes, asset.inline ? "встроенный" : asset.url);
}
```

```bash cURL
curl -H "Authorization: Bearer pr_ВАШКЛЮЧ" \
  "https://api.parreq.com/v1/fetch?url=https://developer.mozilla.org/en-US/&include=js"
```

## Что приходит

```json
{
  "js": [
    {
      "url": "https://developer.mozilla.org/static/client/5909.489e266d049aa182.js",
      "inline": false,
      "bytes": 23971,
      "content": "export const __rspack_esm_id=5909;…"
    },
    {
      "url": "",
      "inline": true,
      "bytes": 341,
      "content": "window.dataLayer=window.dataLayer||[];…"
    }
  ]
}
```

- **`url`** (`string`):
  Адрес файла. Пустая строка у встроенных скриптов — у них адреса нет.

- **`inline`** (`boolean`):
  `true` — скрипт лежал прямо в разметке, `false` — подключался файлом.

- **`bytes`** (`integer`):
  Размер тела в байтах, уже после обрезки по пределу.

- **`content`** (`string`):
  Само тело скрипта — тот текст, который выполнил браузер.

## Откуда берутся тела

> **К сведению.**
>   Из того, что браузер уже загрузил и выполнил, а не догружается повторно.
>   Поэтому приходит именно та версия файла, которая отработала на странице, и
>   второго обращения к сайту не происходит — сайт видит один визит, а не два.

## Пределы

60 файлов, 2 МБ на файл, 8 МБ суммарно. Всё, что сверх, не приходит; счёт от
этого не растёт.

> **Примечание.**
>   Заказанная надстройка приходит **всегда** — пустым списком, если скриптов на
>   странице нет. Так «не заказывал» отличается от «заказал, но их там ноль».

## Дальше

**[CSS](https://docs.parreq.com/fetch-css)**
    Тела стилей — той же формой.

**[Несколько надстроек сразу](https://docs.parreq.com/fetch-combined)**
    Как складывается счёт и в каком порядке всё собирается.
