# Namestitev odjemalca

> Naložite client.js iz CDN-ja Entase, nato ustvarite primerek. Ni paketa za namestitev niti koraka gradnje.

Odjemalec je prek CDN-ja Entase na voljo kot ena sama datoteka. Ni paketa npm, ni svežnja za gradnjo in ni odvisnosti, ki bi jo bilo treba posodabljati – vedno dobite trenutno različico.

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

Z nalaganjem skripta se določi globalni razred `Entase`. Sam po sebi ne naredi ničesar drugega: ne izvaja omrežnih zahtev, ne spreminja DOM-a in ne izriše ničesar. Vse se začne, ko ustvarite primerek.

## Ustvarjanje primerka

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

Ustvarite **en primerek na stran** in ga znova uporabite za vsak dogodek. Konstruktor v oknu registrira poslušalca `message` in začne zaznavati, kateri način zaključka nakupa lahko uporablja vaša domena, zato ustvarjanje več primerkov pomeni podvojene poslušalce in podvojene klice za zaznavanje brez kakršne koli koristi.

Vsaka možnost ima privzeto vrednost, zato je `new Entase()` brez argumentov veljaven – vendar odjemalec brez `pk` ne more preveriti, ali vaša domena lahko uporablja vdelani zaključek nakupa, in bo vedno preklopil na pojavno okno. Glejte [Načini zaključka nakupa](/developers/js-client/checkout-modes.md).

## Asinhrono nalaganje skripta

Če `client.js` naložite z `async` ali `defer`, razred še ne bo obstajal, ko se zažene vaš vdelani skript. Knjižnica po nalaganju v `window` pošlje dogodek `entase:ready`, zato počakajte nanj:

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

Preverjanje `typeof` je pomembno najprej: če se je skript že končal nalagati, se je `entase:ready` že sprožil in poslušanje nanj bi čakalo v nedogled.

## Čiščenje

V enostranski aplikaciji pokličite `destroy()`, ko se pogled, ki je lastnik primerka, odstrani:

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

S tem odstranite poslušalce okna, ki jih je odjemalec registriral. Uničenega primerka ni mogoče znova uporabiti – klic `book()` na njem zabeleži napako in ne naredi ničesar. Namesto tega ustvarite nov primerek.

## Pravilnik o varnosti vsebine

Če vaše spletno mesto pošilja glavo `Content-Security-Policy`, zaključek nakupa potrebuje:

- `script-src https://js.entase.com` – za nalaganje knjižnice.
- `frame-src https://www.entase.com` – zaključek nakupa se v načinu podokna izriše v iframe-u.
- `connect-src https://www.entase.com` – odjemalec kliče API Entase, da določi dovoljeni način zaključka nakupa.

Brez `frame-src` način podokna prikaže prazno ploščo. Brez `connect-src` zaznavanje načina ne uspe in vsak zaključek nakupa se odpre kot pojavno okno.
