TGViewer
mefody.dev mefody.dev @mefody_dev · 5.39K subscribers
Post #32 1.42K
Picture-in-Picture не только для <video>

В Chrome 111 под Origin Trial или за флагом chrome://flags/#document-picture-in-picture-api добавили очень крутое внедрение. Теперь можно делать отдельные плавающие окна для ваших веб-приложений, которые живут поверх всех вкладок. Уверен, вы видели такое раньше для видео, но теперь можно внутрь этих маленьких окошек помещать почти полноценное веб-приложение.

Особенности приложений внутри PiP:
- PiP-окно плавает поверх всех окон.
- PiP-окно закрывается сразу же вместе с окном, из которого оно было вызвано.
- Из PiP нельзя открывать другие окна.
- Внутри PiP не работает навигация (нельзя переходить по ссылкам).
- Из вызывающего окна нельзя управлять позицией PiP на экране.

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

Работать с таким окном несложно, в статье есть подробные примеры кода, как определить поддержку фичи, как открыть окно и установить его размер, как отслеживать события внутри окна, и так далее. Везде нужно работать с новым свойством window.documentPictureInPicture. Забавно выглядит свойство window.documentPictureInPicture.window, которое возвращает текущее PiP-окно.

Фича однозначно полезная. Когда появились первые PiP-видео, я всё ждал, что большие стриминговые сервисы их поддержат. Прошло несколько лет, но тем же Netflix важно оставаться внутри их собственного плеера, у которого есть как хорошая поддержка доступности, так и взаимодействие с пользователем. Теперь им технически проще будет поддержать PiP для своего контента.

Ну а пример с Pomodoro-таймером в статье пленил сердечко. У меня есть несколько приложений, которые разработчикам пришлось заворачивать в Electron исключительно ради вот этого окошка поверх других окон. Скоро от них можно будет отказаться — люблю всё делать через браузер.

https://developer.chrome.com/docs/web-platform/document-picture-in-picture/
Chrome for Developers Picture-in-Picture for any Element, not just <video> | Web Platform | Chrome for Developers Display arbitrary HTML content in an always-on-top window.
  • 👍 26
  • 🔥 8
  • 🤩 1
More from @mefody_dev
  1. Sep 28, 2026View Transitions Toolkit Брамус делится своей коллекцией утилит, чтобы можно было более уд…
  2. Sep 25, 2026Эффект одометра Люблю такие демки, когда на чистом CSS делают что-то необычное, для чего я…
  3. Sep 23, 2026Цена ошибок гидрации В React есть много ухищрений, чтобы серверный кусок страницы обновилс…
  4. Sep 16, 2026Какие анимации более производительные: CSS или JS? Лучше пару раз увидеть, чем много откуд…
  5. Sep 14, 2026Единица измерения lh Если коротко, то 1lh = 1 line height. И это не размер шрифта, который…
  6. Sep 11, 2026<mermaid-element> Ещё одна полезная библиотека. Брамус собрал кастомный элемент, которому…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →