# Instaliranje klijenta

> Učitajte client.js s Entase CDN-a, a zatim stvorite instancu. Nema paketa za instaliranje ni koraka izgradnje.

Klijent se isporučuje s Entase CDN-a kao jedna datoteka. Nema npm paketa, nema paketa za izgradnju ni ovisnosti koju treba održavati ažurnom – uvijek dobivate trenutačnu verziju.

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

Učitavanje skripte definira globalnu klasu `Entase`. Samostalno ne radi ništa drugo: nema mrežnih zahtjeva, nema promjena DOM-a, ništa se ne prikazuje. Sve počinje kada stvorite instancu.

## Stvaranje instance

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

Stvorite **jednu instancu po stranici** i ponovno je upotrebljavajte za svaki događaj. Konstruktor registrira slušač za `message` na prozoru i počinje otkrivati koji način naplate vaša domena smije upotrebljavati, stoga stvaranje više instanci znači duplicirane slušače i duplicirane pozive za otkrivanje bez ikakve koristi.

Svaka opcija ima zadanu vrijednost, pa je `new Entase()` bez argumenata valjan – ali bez `pk` klijent ne može provjeriti smije li vaša domena upotrebljavati ugrađenu naplatu i uvijek će se vratiti na skočni prozor. Pogledajte [Načini naplate](/developers/js-client/checkout-modes.md).

## Asinkrono učitavanje skripte

Ako `client.js` učitavate s pomoću `async` ili `defer`, klasa još neće postojati kada se pokrene vaša umetnuta skripta. Biblioteka nakon učitavanja šalje događaj `entase:ready` na `window`, pa ga pričekajte:

```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>
```

Provjera `typeof` najprije je važna: ako je učitavanje skripte već završeno, `entase:ready` je već poslan i njegovo bi osluškivanje trajalo zauvijek.

## Čišćenje

U aplikaciji s jednom stranicom pozovite `destroy()` kada se prikaz kojem instanca pripada ukloni:

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

Time se uklanjaju slušači prozora koje je klijent registrirao. Uništena instanca ne može se ponovno upotrijebiti – pozivanje `book()` na njoj zapisuje pogrešku i ne radi ništa. Umjesto toga stvorite novu instancu.

## Politika sigurnosti sadržaja

Ako vaša web-lokacija šalje zaglavlje `Content-Security-Policy`, naplata zahtijeva:

- `script-src https://js.entase.com` – za učitavanje biblioteke.
- `frame-src https://www.entase.com` – naplata se u načinu panela prikazuje u iframeu.
- `connect-src https://www.entase.com` – klijent poziva Entase API kako bi odredio dopušteni način naplate.

Bez `frame-src` način panela prikazuje prazan panel. Bez `connect-src` otkrivanje načina ne uspijeva i svaka se naplata otvara kao skočni prozor.
