# Inštalácia klienta

> Načítajte client.js z CDN Entase a potom vytvorte inštanciu. Nie je potrebné inštalovať žiadny balík ani vykonať krok zostavenia.

Klient sa z CDN Entase poskytuje ako jeden súbor. Neexistuje žiadny balík npm, žiadny balík na zostavenie ani žiadna závislosť, ktorú treba udržiavať aktuálnu – vždy získate aktuálnu verziu.

```html
<script src="https://js.entase.com/client.js"></script>
```

Načítaním skriptu sa definuje globálna trieda `Entase`. Samotný skript nerobí nič iné: žiadne sieťové požiadavky, žiadne zmeny DOM, nič sa nevykreslí. Všetko sa začne po vytvorení inštancie.

## Vytvorenie inštancie

```js
const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY' });
```

Vytvorte **jednu inštanciu na stránku** a používajte ju pre každú udalosť. Konštruktor zaregistruje poslucháč udalosti `message` v objekte window a začne zisťovať, ktorý režim checkoutu môže vaša doména používať, takže vytvorenie viacerých inštancií znamená duplicitných poslucháčov a duplicitné volania na zisťovanie bez akéhokoľvek prínosu.

Každá možnosť má predvolenú hodnotu, takže `new Entase()` bez argumentov je platné – bez `pk` však klient nedokáže overiť, či vaša doména môže používať vložený checkout, a vždy prejde na kontextové okno. Pozrite si [Režimy checkoutu](/developers/js-client/checkout-modes.md).

## Asynchrónne načítanie skriptu

Ak načítate `client.js` pomocou `async` alebo `defer`, trieda ešte nebude existovať, keď sa spustí váš vložený skript. Knižnica po načítaní odošle udalosť `entase:ready` v objekte `window`, preto na ňu počkajte:

```html
<script src="https://js.entase.com/client.js" async></script>
<script>
  let entase = null;

  const init = () => { entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY' }); };

  if (typeof Entase !== 'undefined') init();
  else window.addEventListener('entase:ready', init);
</script>
```

Je dôležité najprv vykonať kontrolu `typeof`: ak skript už dokončil načítanie, udalosť `entase:ready` už bola odoslaná a jej počúvanie by čakalo donekonečna.

## Vyčistenie

V jednostránkovej aplikácii zavolajte `destroy()`, keď sa zobrazenie, ktorému patrí inštancia, odpojí:

```js
entase.destroy();
```

Tým sa odstránia poslucháče objektu window, ktoré klient zaregistroval. Zničenú inštanciu nemožno znova použiť – volanie `book()` na nej zapíše chybu a nič nevykoná. Namiesto toho vytvorte novú inštanciu.

## Politika zabezpečenia obsahu

Ak váš web odosiela hlavičku `Content-Security-Policy`, checkout potrebuje:

- `script-src https://js.entase.com` – na načítanie knižnice.
- `frame-src https://www.entase.com` – checkout sa v režime panela vykresľuje v prvku iframe.
- `connect-src https://www.entase.com` – klient volá API Entase, aby určil povolený režim checkoutu.

Bez `frame-src` režim panela vytvorí prázdny panel. Bez `connect-src` zlyhá zisťovanie režimu a každý checkout sa otvorí ako kontextové okno.
