Init_once виджеты

Жизненный цикл виджета подразумевает инициализацию в указанных областях видимости и destroy виджета при покидании области видимости. Данное поведение подходит не для всех случаев. Например, для сервисов телефоний важно иметь постоянное соединение с сервером перманентно и не вызывать destroy виджета ни в каких случаях. В таком случае нам как раз помогает флаг init_once в манифесте виджета.

Ниже приведен кусок файла manifest.json, чтобы данная возможность заработала:

{
  "widget": {
    ...

    "init_once": true

    ...
  },
}

Важно понимать, что при включении параметра init_once виджет будет инициализирован на любой странице, вне зависимости от указанных location-ов (кроме страницы биллинга) в файле manifest.json.

Также в данном режиме важно не забывать следить за очисткой памяти от неиспользуемых данных, нужно самостоятельно снимать все обработчики событий, если они больше не нужны. Например, при переходах пользователя между страницами, для этого можно использовать триггер page:changed на документе:

$(document).on('page:changed', function () {
  // сработает, когда пользователь перейдет на другую страницу
});