Платформа

Web Share API и обмен по действию пользователя

Проектируйте Web Share с явным действием, переменными целями, понятными отказами и доступными альтернативами.

Документация

Нужна структурированная документация по теме Платформа?

Эта статья относится к редакционной библиотеке. Для пошаговой настройки, справки и постоянных обновлений переходите сразу в соответствующий раздел docs.

Web Share API позволяет попросить браузер передать выбранное пользователем содержимое системному или браузерному интерфейсу обмена. Это управляемая пользователем передача: конкретная цель и завершение не гарантируются. Используйте видимую кнопку, проверяйте данные и оставляйте путь для копирования ссылки или скачивания.

Пользователь выбирает содержимое, проверяет обмен и может выбрать альтернативу

Спецификация W3C Web Share описывает модель и требования безопасности. MDN, navigator.share() и navigator.canShare() описывают методы и ограничения совместимости. См. также границы разрешений браузера и приватность веб-процессов.

Явное действие

Браузер может требовать временную активацию пользователя. Не открывайте панель при загрузке, наведении или таймере. Проверьте navigator.share и сразу оставьте резервный путь. Нужен защищённый контекст, но политика браузера всё равно может отклонить запрос.

canShare() проверяет предложенные данные, но не обещает получателя или доставку. share() может отклонить обещание после отмены, неверных данных или невозможности браузера. Не удаляйте черновик и не меняйте маршрут; сообщите о состоянии и сохраните повторную попытку.

Данные и приватность

Формируйте заголовок, текст, URL и файлы из видимого контекста. Не добавляйте идентификаторы, приватные заметки, токены или скрытые метаданные. Приватный URL должен сохранять контроль доступа. Не записывайте содержимое полезной нагрузки в аналитику по умолчанию.

Доступная альтернатива

Предложите копирование ссылки, скачивание экспорта или обычную ссылку. У каждой операции должны быть видимая подпись и управление с клавиатуры. Тестируйте клик, клавиатуру, отмену, отклонённые данные, отсутствие API и незащищённый контекст. Сохраняйте фокус, позицию и данные формы; регистрируйте только агрегированный результат, например shared, cancelled или fallback-used.

Кнопка объясняет, что будет передано.

Действие начинается с явного выбора.

Страница сохраняет форму.

Отмена не удаляет данные.

Защищённый контекст ограничивает область.

Поддержка может различаться.

Канонический URL избегает временного состояния.

Приватные ссылки сохраняют разрешения.

Секреты не помещаются в URL.

Файлы имеют понятные имя и формат.

Копирование ссылки оставляет локальный путь.

Загрузка описывает содержимое.

Фокус возвращается к исходной кнопке.

Состояние сообщается кратким текстом.

Автоматический повтор не выполняется.

Получатель решает, что принять.

Страница не обещает доставку.

Доступность не идентифицирует пользователя.

Аналитика использует агрегированные результаты.

Приватное содержимое не записывается.

Альтернатива работает без API.

Клавиатура достигает всех действий.

Масштабирование и крупный текст поддерживаются.

Длинные переводы проходят проверку.

Двунаправленный текст сохраняет порядок.

Офлайн-режим сохраняет контекст.

Экспорт может подождать.

Каждая ошибка предлагает следующий шаг.

Обычная ссылка остаётся доступной.

Разрешение проверяется на сервере.

Обмен не меняет права.

Встроенный компонент соблюдает границу.

Хост может выбрать другую альтернативу.

Тесты проверяют видимый результат.

Панель браузера является внешней.

Документация избегает универсальных обещаний.

Проверка сопровождает каждое изменение.

Непрерывность важнее интерфейса.

Действие остаётся добровольным.

Резервный путь является частью функции.

Путь остаётся понятным, когда обмен недоступен.

Пользователь продолжает задачу без потери контекста.

Практический список

Источники

#Web Share API#Обмен#Доступность#Приватность

Переведите BotBrowser из исследований в продакшн

Используйте эти руководства, чтобы понять модель, а затем перейти к кроссплатформенной валидации, изолированным контекстам и масштабируемому браузерному развертыванию.