# 建構函式選項

> `new Entase()` 接受的每個選項，包括其預設值和作用。所有選項均為可選，而且大多可按每個預訂覆寫。

所有選項均為可選。以下數值是你省略某個選項時，客戶端會套用的預設值。

```js
const entase = new Entase({
  pk: null,
  locale: 'auto',
  checkoutMode: 'auto',
  collectConsent: true,
  backdrop: true,
  backdropColor: '#000000',
  tprm: {},
  pane:  { width: 800, height: '100%' },
  popup: { width: 800, height: 1000 }
});
```

## 選項

| 名稱 | 類型 | 預設值 | 說明 |
|---|---|---|---|
| `pk` | 字串 | `null` | 你的可公開金鑰。客戶端會在檢查你的網域是否獲允許使用嵌入式結帳時傳送此金鑰。沒有此金鑰時，每次結帳都會以彈出式視窗開啟。 |
| `locale` | 字串 | `'auto'` | 結帳的語言。`'auto'` 會讀取 `<html>` 元素的 `lang` 屬性。 |
| `checkoutMode` | 字串 | `'auto'` | `'auto'`、`'pane'` 或 `'popup'`。請參閱[結帳模式](/developers/js-client/checkout-modes.md)。無法識別的值會回退至 `'auto'`。 |
| `collectConsent` | 布林值 | `true` | 結帳是否要求訪客接受條款通知。接受後，答案會儲存在 Cookie 中，並略過此步驟。 |
| `backdrop` | 布林值 | `true` | 是否調暗結帳後方的頁面。`false` 亦會停用頁面捲動鎖定。 |
| `backdropColor` | 字串 | `'#000000'` | 調暗區域的顏色，以 CSS 顏色值表示。 |
| `tprm` | 物件 | `{}` | 作為查詢參數附加到結帳 URL 的追蹤參數。請參閱[追蹤和同意](/developers/js-client/tracking-and-consent.md)。 |
| `pane` | 物件 | `{ width: 800, height: '100%' }` | 嵌入式面板的大小。在彈出式視窗模式中會被忽略。 |
| `popup` | 物件 | `{ width: 800, height: 1000 }` | 彈出式視窗的大小，以像素為單位。在面板模式中會被忽略。 |

## 面板和彈出式視窗大小設定

`pane.width` 可接受數字（像素）或任何 CSS 長度值 – `'720px'`、`'50%'`、`'40vw'` 或 `calc()` 運算式。純數字會視為像素。

在桌面裝置上，面板寬度上限為此數值；在流動裝置上則會佔用完整寬度，並改為套用 `pane.height`。當檢視區寬度小於設定寬度時，便會在兩者之間切換；如寬度以相對單位指定，則會在 800px 時切換。

`popup.width` 和 `popup.height` 只接受以像素表示的數字，視窗會置中顯示於訪客的螢幕上。如螢幕高度不足以容納所要求的高度，視窗會縮小以配合螢幕。

## 背景遮罩

彈出式視窗後方的背景遮罩會比面板後方調暗得更深，因為彈出式視窗需要讓下方頁面顯示為非使用中狀態。設定 `backdrop: false` 可完全移除調暗效果 – 這亦會讓頁面在結帳視窗後方保持可捲動。

`backdropColor` 會原樣套用，因此可以是任何有效的 CSS 顏色。請用它來配合深色或具品牌風格的網站，而非用來隱藏背景遮罩；如要這樣做，正確的選項是 `backdrop: false`。

## 按預訂覆寫

你可將 `checkoutMode`、`collectConsent`、`backdrop`、`backdropColor`、`pane` 和 `popup` 傳遞至 `book()`，以覆寫單一預訂的設定。實例層級的值會維持不變，供後續呼叫使用：

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

// This one booking opens wider, with no dimming.
entase.book('EVENT_ID', {
  pane: { width: '60vw' },
  backdrop: false
});
```

`pk` 和 `tprm` 並非按預訂選項 – `pk` 用於識別整個頁面的帳戶，而需要不同的追蹤參數時，則應使用 `setTracking()` 變更。
