Расширение ShopTools AI помогает проверить промокоды на поддерживаемой странице магазина. Встроенный в такую страницу интерфейс должен оставлять оформление заказа доступным. Для проектирования виджета это важнее заметности.

Выберите границу для стилей
Изоляция JavaScript расширения не означает изоляцию добавленной разметки от CSS страницы. Глобальные правила магазина могут изменить кнопки, шрифт и размеры. Рассмотрим варианты защиты, не привязывая их к текущей сборке ShopTools.
- Префиксы классов и ID уменьшают случайные совпадения, но не останавливают все глобальные правила.
- Shadow DOM помогает отделить стили; наследование и настройки темы всё равно требуют проверки.
- iframe даёт отдельный документ, но усложняет размеры, фокус и обмен сообщениями.
При обычной DOM-разметке ограничьте сброс стилей собственным корнем. Не исправляйте ради виджета все кнопки магазина. Проверяйте box-sizing, внешние отступы, преобразование текста и видимость фокуса.
Один экземпляр на каждый жизненный цикл
Повторная инициализация не должна создавать ещё одну панель или второй набор обработчиков. Маркер корневого элемента полезен, но его наличие не доказывает, что старые подписки и наблюдатели очищены.
Определите, что происходит при смене маршрута, замене контейнера checkout и отключении виджета. Процедура завершения должна удалять принадлежащие ему узлы, обработчики и наблюдатели, не затрагивая магазин.
Проверяйте и обратный путь: после включения интерфейс появляется ровно один раз. Удалённая панель не должна возвращаться сама из позднего callback.
Не выигрывайте спор за экран любой ценой
Очень высокий z-index не является правилом приоритета. Виджет не должен перекрывать оплату, сообщения об ошибках, выбор доставки или диалог магазина. Скрыть или переместить панель иногда правильнее, чем поднять её выше.
На узком экране ограничьте размеры доступной областью и предусмотрите прокрутку содержимого. Длинный перевод, увеличение текста и экранная клавиатура не должны делать основные действия недостижимыми.
Сокращайте движение при соответствующей системной настройке. Остановка операции должна завершать и её анимацию; постоянная пульсация не служит доказательством работы.
Тестируйте вмешательство, а не только внешний вид
- Создайте тестовую страницу с правилом button { all: unset; }. Кнопка виджета должна сохранять заданные размеры, оформление и видимый фокус при переходе клавишей Tab.
- Добавьте диалог поверх оформления и проверьте доступ к действиям магазина с клавиатуры.
- Несколько раз замените корень checkout и пересчитайте панели и вызовы обработчиков.
- Повторите проверки с узким окном, увеличенным текстом и сокращённой анимацией.
- Отключите виджет во время ожидания ответа и убедитесь, что он не появляется снова.
Такой набор задаёт требования к совместимости, а не подтверждает её на всех сайтах. Даже изолированная панель делит с магазином экран и внимание пользователя; это ограничение нельзя устранить одним CSS-приёмом.
Материал редакции ShopTools AI.
Некоторые переходы в ShopTools партнёрские. За подтверждённую покупку сервис может получить комиссию; сам переход не гарантирует начисление.
Подготовлено с помощью ИИ. Описание функций сверено с кодом и интерфейсом ShopTools; это не отчёт о проверке каждого магазина.