0

我正在为 chrome 编写一个扩展程序,当用户从弹出窗口输入查询时,它会显示结果页面。我希望后续查询使用现有的结果页面而不是打开新的结果页面。

我曾经chrome.extension.getViews({'type':'tab'})获取当前打开的扩展页面并将查询传递给打开页面中的 javascript 函数。

我遇到的问题是在不需要“标签”权限的情况下切换到该页面。

这段代码在后台页面上运行良好。

chrome.tabs.getCurrent(function(tab){
    chrome.tabs.update(tab.id, {selected: true});
});

但是,tabs.getCurrent 需要 'tabs' 权限。有没有办法在没有标签许可的情况下做到这一点?

我可以使用chrome.tabs.update,但我不知道如何从返回的视图对象中获取选项卡 ID chrome.extension.getViews

4

2 回答 2

1

我相当肯定这不能在没有tabs许可的情况下完成。您已正确识别出这chrome.tabs.update是您需要的功能,但tabs未经许可,它只能通过提供选项卡 ID 参数对当前选定的选项卡进行操作。null由于您无法在chrome.tabs.update未经许可的情况下提供选项卡 ID,因此无法在选项卡之间切换。

于 2012-06-21T22:43:05.010 回答
0

/edit:正如 appsilers 提到的那样,实际上并不可行。

如果您可以改为使用chrome.tabs.create()打开所需的选项卡,它还将在创建时返回其选项卡 ID。

否则,唯一的方法是在目标上下文中添加一个全局变量,并使用它chrome.extension.getViews()来识别目标并调用焦点窃取函数,例如alert(). 但我建议不要这样做,因为它更像是一种 hack,并且不能保证此功能在构建之间保持稳定。

于 2012-06-21T22:27:18.213 回答