Как сохранить плагины NPAPI в представлении ExtJS с вкладками - PullRequest
1 голос
/ 15 марта 2012

Я пытаюсь использовать пользовательский плагин NPAPI видеоплеера (просмотр FireBreath) внутри приложения ExtJS с вкладками.Плагин находится в одной вкладке, а остальные содержат презентации других не видео данных.

При переключении с вкладки на вкладку элемент, содержащий плагин, уничтожается, и все состояние плагина теряется.Есть ли способ настроить панель вкладок ExtJS так, чтобы html, содержащийся в ней, не изменялся при переключении на другую вкладку (просто скрытую)?Альтернативой является повторное заполнение состояния плагина при возврате на вкладку, но это будет связано с недопустимой задержкой (в основном при ожидании ключевых кадров видео).

Спасибо, O

Ответы [ 2 ]

1 голос
/ 17 марта 2012

Я не знаю о вашем подходе ExtJS, если вы можете решить его на той стороне, которая, конечно, будет предпочтительнее.

Однако, если вы не можете, вы можете избежать повторной инициализации, перемещаяобработка потока в вспомогательном приложении, которое работает в фоновом режиме.Плагин запускает его по мере необходимости и получает от него данные о потоке после регистрации.
Помощнику сообщают, когда нужно завершить поток и, возможно, уничтожить его самостоятельно через некоторое время (чтобы избежать утечек сеанса в случае сбоя).плагины и т. д.).

0 голосов
/ 19 марта 2012

Я собирался рассмотреть вспомогательное приложение, как рекомендовано выше, или изучить переписывание плагина без окон. Оба могут быть более надежными решениями для других сред JS.

К счастью, решение оказалось проще, чем это, по крайней мере для ExtJS. По умолчанию ExtJS устанавливает "display: none" в div представления с вкладками всякий раз, когда оно не отображается, что вызывает деструктор плагина. После небольшого изучения их огромного API, ExtJS имеет параметр hideMode как часть базового класса Ext.panel.Panel:

'display': компонент будет скрыт с помощью дисплея: без стиля.

'видимость': компонент будет скрыт, используя стиль видимости: скрытый.

'смещения': Компонент будет скрыт, если расположить его вне видимой области документа. Это полезно, когда скрытый компонент должен поддерживать измеримые размеры. При скрытии с помощью отображения отображается компонент с нулевыми размерами.

По умолчанию: «display»

Установка родительской панели, содержащей плагин, на hideMode: 'offsets' решает проблему отлично.

...