我希望为用户显示一个通知,该通知将以page action的形式始终保持可见状态,直到用户执行某些操作为止。我现在正在使用此代码:
chrome.tabs.getSelected(null, function (tab) {
chrome.pageAction.show(tab.id);
});
但是,只有在加载扩展程序时,才会在活动选项卡上创建页面操作图标。相反,我希望无论用户在哪个页面或标签上,图标都会一直显示。当用户执行处理通知所需的操作时,它也需要消失。
我在考虑两个想法。第一个是循环并向每个选项卡添加页面操作,然后挂钩新选项卡和导航事件并将其添加到每个选项卡。我的第二个想法是挂钩活动标签更改事件并将其添加到活动标签页,然后在下次更改标签时将其从前标签中删除。
但我认为可能还有一种更好的方式,我没有想到或不知道。那么实现这一目标的最佳方法是什么?
答案 0 :(得分:2)
如果您想获得标签更改的通知,则需要挂钩onActivated
事件。
然而,这还不够,因为页面操作将在导航时重置。因此,您需要连接几乎每个tabs
API事件以确保您的逻辑。另外,想想之后需要的清理工作。
真的 对于页面操作来说似乎很糟糕。还有一个重要的考虑因素是,典型用户不会将此UI元素与需要关注的内容相关联。您是否考虑过使用通知?
您可以将chrome.notifications
Rich Notifications与priority trick一起使用,或仅使用web notifications。在任何一种情况下,它都会以适合于某些方式向用户显示的内容需要您的关注。#34;。然后你可以挂钩它的onclick事件。
如果你想要一个按钮,browserAction
是完全合适的。您可以动态更改图片,在图标上添加文本标记以吸引注意力,或者只是在没有任何操作时禁用按钮(不隐藏,但灰显)。
答案 1 :(得分:1)
根据documentation,页面操作应该仅用于单个页面。如果您希望在所有页面上显示某些内容,则应使用browserAction。
或者,您可以尝试在权限中设置"<all_urls>"
,但我还没有测试它是否真的有用。