# Instaliranje klijenta

> Učitajte client.js sa Entase CDN-a, a zatim kreirajte instancu. Ne postoji paket za instalaciju niti korak izgradnje.

Klijent se isporučuje sa Entase CDN-a kao jedna datoteka. Nema npm paketa, nema paketa koji treba izgraditi i nema zavisnosti koju treba održavati ažurnom – uvek dobijate trenutnu verziju.

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

Učitavanjem skripte definiše se globalna klasa `Entase`. Ona sama po sebi ne radi ništa drugo: nema mrežnih zahteva, nema izmena DOM-a, ništa se ne prikazuje. Sve počinje kada kreirate instancu.

## Kreiranje instance

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

Kreirajte **jednu instancu po stranici** i ponovo je koristite za svaki događaj. Konstruktor registruje `message` osluškivač na prozoru i počinje da utvrđuje koji režim naplate vaš domen sme da koristi, pa kreiranje više instanci znači duplirane osluškivače i duplirane pozive za utvrđivanje bez ikakve koristi.

Svaka opcija ima podrazumevanu vrednost, pa je `new Entase()` bez argumenata ispravan – ali bez `pk` klijent ne može da proveri da li vaš domen sme da koristi ugrađenu naplatu i uvek će se vratiti na iskačući prozor. Pogledajte [Režimi naplate](/developers/js-client/checkout-modes.md).

## Asinhrono učitavanje skripte

Ako `client.js` učitavate pomoću `async` ili `defer`, klasa još neće postojati kada se izvrši vaša umetnuta skripta. Biblioteka šalje događaj `entase:ready` na `window` kada se učita, zato sačekajte taj događaj:

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

Provera `typeof` je najpre važna: ako je skripta već završila učitavanje, `entase:ready` se već aktivirao i osluškivanje tog događaja čekalo bi zauvek.

## Čišćenje

U aplikaciji sa jednom stranicom pozovite `destroy()` kada se prikaz koji poseduje instancu demontira:

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

Time se uklanjaju osluškivači prozora koje je klijent registrovao. Uništena instanca ne može ponovo da se koristi – pozivanje `book()` na njoj beleži grešku i ne radi ništa. Umesto toga kreirajte novu instancu.

## Politika bezbednosti sadržaja

Ako vaš sajt šalje zaglavlje `Content-Security-Policy`, naplati je potrebno sledeće:

- `script-src https://js.entase.com` – za učitavanje biblioteke.
- `frame-src https://www.entase.com` – naplata se prikazuje u iframe-u u režimu panela.
- `connect-src https://www.entase.com` – klijent poziva Entase API da bi odredio dozvoljeni režim naplate.

Bez `frame-src`, režim panela prikazuje prazan panel. Bez `connect-src`, utvrđivanje režima ne uspeva i svaka naplata se otvara kao iskačući prozor.
