Я работаю над расширением Google Chrome, и мне нужно создать всплывающее окно, которое фиксируется в углу и всегда поверх других окон.
Я оставляю ссылку:
Извините, но больше невозможно заставить окно оставаться на вершине. Однако, если вам нужно открыть окно в правом нижнем углу экрана, взгляните на этот другой ответ: открыть окно приложения Chrome в правом нижнем углу экрана.
Раньше одним из вариантов было использование chrome.windows.create({ type: 'panel' })
. Панели могли иметь любой размер и положение, поддерживали всегда лучшие функции, могли отображать любую произвольную часть кода... Но теперь они исчезли, как вы можете видеть в документах:
"panel"
Устаревший в этом API. Окно в стиле панели приложений Chrome. Расширения могут видеть только их собственные окна панели.
Основной причиной удаления было то, что это слишком дорого для поддержания, как вы можете прочитать в этой статье.
Другой вариант, используемый для webKitNotifications.createHTMLNotification()
, но тот тоже ушел:
Предупреждение:
webKitNotifications.createHTMLNotification()
в API веб-уведомлений устарел. Новый API веб-уведомлений допускает только текст. API уведомлений Chrome скоро будет доступен для стабилизации, а веб-уведомления будут обновлены, чтобы использовать новый формат богатых уведомлений.
Вы не одиноки. Многие расширения, такие как Always On Top для YouTube или Picture in Picture Viewer, опирались на всегда лучшие функции, и вы можете увидеть из плохих отзывов, что они не смогли или не захотели найти альтернативные решения.
Одной из альтернатив отображать только изображения (может и не работать для вас, как вам, вероятно, и звук) было бы использование уведомления об изображении с изображением холста, которое вы можете генерировать и динамически обновлять из фонового сценария.
При таком подходе вы можете отображать анимацию/видео, но я не уверен, насколько это было бы плавно.
Если вы хотите постоянно отображать любой произвольный код для пользователя, вы можете использовать API вкладок, чтобы отслеживать активную вкладку и вставлять на нее собственный код с помощью executeScript
и insertCSS
.
Три основных недостатка этого подхода заключаются в следующем:
Содержимое не будет отображаться мгновенно, особенно в случае видео, которое нужно загрузить первым, поэтому, когда пользователи переключают вкладки, они фактически заметят, как вводимый контент появляется снова и загружает все, что ему нужно загрузить.
Если Chrome сведен к минимуму или частично за пределами экрана, они могут не увидеть введенный контент.
Конфликт с существующим кодом на странице.
web_accessible_resources
в вашем манифесте. Это должен быть массив, содержащий HTML-файл, который вы загружаете в этот iframe, а также любой другой CSS, JS или изображение, которое загружает HTML-файл.