---
title: "Placement Manager Class"
description: "Used for managing the placement of widgets in the Bitrix24 application."
canonical_url: "https://bitrix24.github.io/b24jssdk/docs/working-with-the-rest-api/frame-placement"
last_updated: "2026-05-08"
---
# Placement Manager Class

> Used for managing the placement of widgets in the Bitrix24 application.

> [!WARNING]
> We are still updating this page. Some data may be missing here — we will complete it shortly.

[Learn more](https://apidocs.bitrix24.com/api-reference/widgets/ui-interaction/index.html)

## Getters

### `placement`

```ts
get placement(): string
```

Returns the placement title. By default, returns `'DEFAULT'` if the title is not set.

### isDefault

```ts
get isDefault(): boolean
```

Returns `true` if the placement title is `'DEFAULT'`.

### options

```ts
get options(): any
```

Returns the placement options object. The object is frozen to prevent modifications.

### isSliderMode

```ts
get isSliderMode(): boolean
```

Returns `true` if the widget is operating in slider mode (option `IFRAME` is `'Y'`).

```ts
// ... /////
$b24 = await initializeB24Frame()
// ... /////
if ($b24.placement.isSliderMode) {
    $b24.parent.setTitle('SliderMode')
}
```

## Methods

### getInterface

```ts
async getInterface(): Promise<any>
```

Getting information about the JS interface of the current embedding location: a list of possible commands and events.

```ts
// ... /////
$b24 = await initializeB24Frame()
// ... /////
const value: any = await $b24.placement.getInterface()
```

### bindEvent

```ts
async bindEvent(eventName: string): Promise<any>
```

Setting up the event handler for the interface

### call

```ts
async call(command: 'setValue', parameters: { value: string }): Promise<any>
async call(command: string, parameters?: Record<string, any>): Promise<any>
```

Call the registered interface command.

```ts
import { LoggerBrowser, LoggerType } from '@bitrix24/b24jssdk'
// ... /////
const logger = LoggerBrowser.build('Demo', true)

$b24 = await initializeB24Frame()
// ... /////
$b24.placement.call('reloadData')
  .then((respose: any) => {
    logger.log('reload call')
  })
```

> [!WARNING]
> The `setValue` command is special: the parent window calls `JSON.parse(value)`
> on the received payload, so `value` **must** be a JSON-serialized string. Passing
> a raw string or an object directly will fail (`SyntaxError` from
> `JSON.parse`, or silent corruption to `"[object Object]"`).
> Prefer the [`setValue`](#setvalue) helper, which serializes for you. If you use
> `call('setValue', ...)` directly, the SDK will throw a `TypeError` when `value`
> is not a string.
> ```ts
> // ✗ throws TypeError — value is not a string
> await $b24.placement.call('setValue', { value: 'test' })
> // ✓ works — value is a JSON string
> await $b24.placement.call('setValue', { value: JSON.stringify('test') })
> await $b24.placement.call('setValue', { value: JSON.stringify({ id: 1 }) })
> ```

### setValue

```ts
async setValue(value: unknown): Promise<any>
```

Convenience wrapper around `placement.call('setValue', ...)` that performs
`JSON.stringify` on the value for you. Accepts any JSON-serializable value
(string, number, boolean, object, array).

```ts
$b24 = await initializeB24Frame()
// ... /////
await $b24.placement.setValue('test')
await $b24.placement.setValue({ id: 1, title: 'demo' })
```

## Sitemap

See the full [sitemap](/b24jssdk/sitemap.md) for all pages.
