Работа с буфером обмена
Введение
Веб-приложение online.sbis.ru предоставляет возможность сохранять и пересылать среди клиентов ссылки на документы, параметры фильтров и другие данные посредством копирования в буфер обмена.
Для взаимодействия с буфером обмена используют кроссбраузерное решение — контрол Clipboard/clipboards:Clipboard. Он предоставляет API для взаимодействия с буфером обмена через API веб-браузера, СБИС Плагина или диалоговое окно.
Далее в порядке убывания приоритета приведён список средств, которыми Clipboard/clipboards:Clipboard
пытается взаимодействовать с буфером обмена:
- Нативные методы веб-браузера.
- СБИС Плагин.
- Диалоговое окно. Пользователь вручную копирует/добавляет данные через
Ctrl + C(V)
.
Ограничения
Нативные методы у браузера
Пользовательское событие
Для копирования данных нативными средствами веб-браузера необходимо пользовательское событие (клик или нажатие клавиши). По этой причине метод копирования (см. API) не срабатывает просто так:
// Нет события клика.
import {Clipboard} from 'Clipboard/clipboards';
import {IoC} from 'Env/Env';
class MyClass {
private _clipboard: Clipboard = new Clipboard();
copy(): void {
this._clipboard.setText('Hello world').catch(() => {
IoC.resolve('ILogger').error('Попытка записи без пользовательского действия');
});
}
};
Получение данных
Получение данных из буфера обмена не поддерживается нативными средствами веб-браузера. Получение данных сразу осуществляется через СБИС Плагин.
Ограничение связано с политикой безопасности веб-браузеров.
СБИС Плагин
При работе с буфером обмена через СБИС Плагин накладывается временная задержка, которая состоит из:
- создания подключения к СБИС Плагину (~5-10 секунд);
- загрузки модулей СБИС Плагина;
- загрузки модуля реализации копирования через СБИС Плагин.
Для клиента это выглядит следующим образом:
- нажатие на кнопку;
- долгое ожидание;
- загрузка/получение данных из СБИС Плагина;
- в случае, когда плагин не используется, происходит отображение диалога для копирования.
В ряде сценариев на клиентской стороне либо отсутствует СБИС Плагин вовсе (например, в ОС CentOS), либо он не используется веб-приложением (например, Управление облаком).