5

我正在制作一个跨浏览器扩展,它会覆盖标准的“新标签”页面。

有一个manifest.json关键,称为chrome_url_overrides

"chrome_url_overrides": { "newtab": "index.html" }

它适用于 Chrome 和 Firefox!但是在 Opera (45.0) 中,当我尝试加载扩展时会出现以下错误:

指定的扩展 ID 不允许使用“chrome_url_overrides”。

根据我在MDN chrome_url_overrides docs中阅读的内容,Opera 支持这一点。

现在我不确定Opera是否通常不允许这样做,或者是否有办法激活它?


编辑:我在 Opera 论坛中发现了一个类似的、尚未答复的 3 个月大的帖子。

4

2 回答 2

2

其实Opera现在官方还不支持 chrome_url_overrides。可以在您引用的 MDN 页面上找到一条证据,并由 Opera 代表在其论坛中确认。

在 Opera 中实现新标签扩展的一种潜在解决方法(实际上这也应该在其他浏览器中工作)是使用带有以下代码的后台脚本:

const redirectURLS = [
  "opera://startpage/",
  "browser://startpage/",
  "chrome://startpage/"
];

chrome.tabs.onCreated.addListener(function(tab) {
  for (let i = 0; i < redirectURLS.length; i++) {
    if (tab.url === redirectURLS[i]) break; // user is trying to open startpage
    if (i == redirectURLS.length - 1) return; // Tab is not trying to open a startpage
  }
  chrome.tabs.update(tab.id, { url: "index.html" });
});

这样做将检查用户是否尝试打开新选项卡,如果是这种情况,它将打开安装插件时附带的自定义 index.html 页面。这是一个 hacky 和肮脏的,不确定它是否会被 Opera 接受,但对于那些拼命试图在其他 Opera 插件中获得新标签扩展的人来说,这可能是一条救赎之路。

有趣的事实: Opera 开发并分发了一个插件,它可以帮助您从 Opera 上的 chrome 扩展商店安装 chrome 扩展,但是新的标签扩展不起作用并且在安装时失败并显示以下消息:

[兼容性通知] 请注意,此扩展需要 Opera 不支持的 API。它仍然可以在 Opera 中运行,因此请完成安装以验证。

于 2019-11-30T21:06:19.613 回答
1

Opera 的验收标准说:

扩展不能替换 Opera 的默认起始页。

即使您设法完成目标并替换标准的“新标签”页面,扩展也不会通过审核。

解决方法包括分配一个键盘快捷键来打开您的页面,或从浏览器操作按钮启动它。

于 2019-03-20T23:16:06.917 回答