首页 > 解决方案 > 已修复且始终位于 Chrome 扩展程序中的顶部弹出窗口

问题描述

我正在开发 Google Chrome 扩展程序,我需要制作一个固定在角落的弹出窗口,并且始终位于其他窗口的顶部。

我留下一个参考图像:

在此处输入图像描述

标签: javascriptgoogle-chromegoogle-chrome-extensionpopuppopupwindow

解决方案


坏消息...

很抱歉,现在无法强制窗口始终保持在顶部。但是,如果您只需要在屏幕的右下角打开一个窗口,请查看另一个答案:Getting a Chrome app window to open at the bottom of screen

以前,一种选择是使用chrome.windows.create({ type: 'panel' }). 面板可以有任何大小和位置,支持始终在最上面的功能,可以显示任意一段代码......但是它们现在已经消失了,正如您在文档中看到的那样:

"panel"

在此 API 中已弃用。Chrome 应用程序面板样式的窗口。扩展只能看到自己的面板窗口。

删除的主要原因是维护成本太高,您可以在本文中阅读。

另一种选择曾经是webKitNotifications.createHTMLNotification()但那个也没有了

警告: webKitNotifications.createHTMLNotification()web 通知 API中已被弃用。新的网络通知 API只允许文本。Chrome 通知 API将很快升级为稳定版,并且网络通知将更新为使用新的丰富通知格式。

你并不孤单。很多扩展,如YouTube™ 的 Always On Top™</a> 或画中画查看器都依赖于始终位于顶部的功能,您可以从差评中看到他们无法或不愿意找到替代解决方案。

图像的替代品

仅显示图像的一种替代方法(可能不适合您,因为您可能还需要声音)是使用带有画布图像的图像通知,您可以从后台脚本动态生成和更新。

使用这种方法,您也许可以显示动画/视频,但我不确定它的流畅程度。

使用上下文脚本的替代方法

如果您想向用户永久显示任意代码,您可以使用tabs API来跟踪活动选项卡并使用executeScriptand在其上插入自定义代码insertCSS

这种方法的三个主要缺点是:

  • 内容不会立即出现,尤其是在需要首先加载的视频的情况下,因此当用户切换标签时,他们实际上会注意到注入的内容如何再次出现并加载它必须加载的任何内容。

  • 如果 Chrome 被最小化或部分不在屏幕上,他们可能看不到注入的内容。

  • 与页面上的现有代码冲突。


推荐阅读