v1.3.0

Parent Manager Class

Provides methods for managing the parent application window in Bitrix24, including resizing the window, managing scroll, initiating calls, and opening the messenger.
// ... /////
$b24 = await initializeB24Frame()
// ... /////
await $b24.parent.fitWindow()

Methods

closeApplication

async closeApplication(): Promise<void>

Closes the application slider.

fitWindow

async fitWindow(): Promise<any>

Sets the application frame size according to its content size.

resizeWindow

async resizeWindow(width: number, height: number): Promise<void>

Resizes the application frame to the specified width and height.

resizeWindowAuto

async resizeWindowAuto(
    appNode: null | HTMLElement = null,
    minHeight: number = 0,
    minWidth: number = 0
): Promise<void>

Automatically resizes the document.body of the application frame according to its content size.

ParameterTypeDescription
appNodenull|HTMLElementApplication node for height calculation.
minHeightnumberMinimum height.
minWidthnumberMinimum width.

getScrollSize

getScrollSize(): { scrollWidth: number, scrollHeight: number }

Returns the internal dimensions of the application frame.

scrollParentWindow

async scrollParentWindow(scroll: number): Promise<void>

Scrolls the parent window to the specified position.

reloadWindow

async reloadWindow(): Promise<void>

Reloads the application page.

setTitle

async setTitle(title: string): Promise<void>

Sets the application page title — the in-layout heading element (#pagetitle) that Bitrix24 renders around your app. It does not change the browser tab title.

The portal handles this command with BX.ajax.UpdatePageTitle(), which rewrites the #pagetitle element. It never calls BX.ajax.UpdateWindowTitle() (the function that assigns document.title), so the browser tab title stays untouched — regardless of the app's domain or placement mode.

ContextEffect of setTitle()
Application pageUpdates the visible page heading (#pagetitle). Browser tab unchanged.
SliderTargets the layout #pagetitle (often not visible); the slider header and browser tab are unchanged.
Placement (widget)Limited to the host layout's #pagetitle, if present. Browser tab unchanged.

To put a title into the browser tab, open the view as a slider with a bx24_title option (see slider.openSliderAppPage):

await $b24.slider.openSliderAppPage({ bx24_title: 'Q1 2025 — John Smith' })

For full, dynamic control of the browser tab title (e.g. telling apart several standalone browser tabs of your app), the app must own the top-level document — i.e. run as a standalone page outside the portal iframe, where you set document.title yourself.

imCallTo

async imCallTo(userId: number, isVideo: boolean = true): Promise<void>

Initiates a call through internal communication.

ParameterTypeDescription
userIdnumberUser identifier.
isVideobooleantrue for video call, false for audio call.

imPhoneTo

async imPhoneTo(phone: string): Promise<void>

Makes a call to the specified phone number.

ParameterTypeDescription
phonestringPhone number.

imOpenMessenger

async imOpenMessenger(dialogId: number|'chat${number}'|'sg${number}'|'imol|${number}'|undefined): Promise<void>

Opens the messenger window.

ParameterTypeDescription
dialogIdnumber|chat${number}|sg${number}|imol|${number}|undefinedDialog identifier.

imOpenHistory

async imOpenHistory(dialogId: number|'chat${number}'|'imol|${number}'): Promise<void>

Opens the message history window.

ParameterTypeDescription
dialogIdnumber|chat${number}|imol|${number}Dialog identifier.

Examples

Try call

frame-parent-call.ts
import type { B24Frame } from '@bitrix24/b24jssdk'
import { Text, LoggerFactory, Logger, ConsoleV2Handler, LogLevel } from '@bitrix24/b24jssdk'


const devMode = typeof import.meta !== 'undefined' && (import.meta?.dev || globalThis._importMeta_.env?.DEV)
const $logger = LoggerFactory.createForBrowser('Example:B24FrameParentCall', devMode)
const $b24 = useB24().get() as B24Frame

const loggerForDebugB24 = Logger.create('b24')
const handlerForDebugB24 = new ConsoleV2Handler(LogLevel.DEBUG, { useStyles: true })
loggerForDebugB24.pushHandler(handlerForDebugB24)

$b24.setLogger(loggerForDebugB24)

const response = await $b24.parent.message.send(
  'setTitle',
  {
    title: 'Text for insertion',
    requestId: Text.getUuidRfc4122(),
    isSafely: true,
    safelyTime: 1500
  }
)

$logger.debug('parent response', {
  response
})