Chrome扩展程序无法访问chrome:// extension-icon

时间:2016-11-07 23:58:18

标签: google-chrome google-chrome-extension

我正在尝试列出Chrome扩展程序中的其他扩展程序,并显示其图标。

另一个扩展(Zenmate VPN)可以轻松显示其他图标。我发现它的清单中有management个权限。

  • 我将"management"添加到optional_permissions,并要求用户在点击后启用它。
  • 之后,我可以列出扩展名,但页面中的图标仍无法访问。

当我将management添加到permissions部分时,一切正常。问题是我们不想在那里添加此权限,因为如果更新版本要求更多的访问权限,Chrome会默认禁用该扩展程序。

有没有办法以某种方式刷新页面中的权限,以使图标URL工作(chrome://extension-icon/*),就像它们在ZenMate中工作一样?

2 个答案:

答案 0 :(得分:2)

如果您已获得chrome://favicon权限,则可以使用它来显示扩展名图标

<img src="chrome://favicon/chrome-extension://igiofjhpmpihnifddep‌​npngfjhkfenbp/">

如果您最初没有chrome://favicon权限,请尝试在optional_permissions中添加。如果它无法正常工作,请尝试添加到permissions,但首先测试它是否会在更新时停用您的扩展程序。

可以指定其他图标尺寸(如果没有实际的大图标,则会缩放默认的16x16px):

  • Retina 2x DPI:chrome://favicon/size/16@2x/chrome-extension://.......
  • 48px:chrome://favicon/size/48/chrome-extension://.......

答案 1 :(得分:0)

我检查了是否可以使用wOxxOm的答案,并且大多数扩展程序没有更大的favicon,也不能请求chrome://favicon/*权限:Chrome会抛出一个例外:

  

运行permissions.request时未经检查的runtime.lastError:&#39; chrome:// favicon / *&#39;不是公认的许可。

所以我找到了一个简单而强大的解决方案:我只需关闭当前选项卡并创建一个新选项卡:

    permissionsAchieved = function(allowed) {
        chrome.tabs.create({ url: "<write current url here>" });
        window.close();
    },

完成。在新打开的选项卡中,图标显示正确。

但感谢您的建议!