为什么在Opera中,指定的扩展ID不允许使用'chrome_url_overrides'?

时间:2017-06-19 15:54:02

标签: opera opera-extension

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

有一个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论坛中找到similar, unanswered yet, 3-months-old thread

2 个答案:

答案 0 :(得分:1)

实际上,Opera现在正式不支持 chrome_url_overrides。在MDN page that you referenced上可以找到证据,并且得到Opera代表in their forum的证实。

在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页面。这是一个杂乱无章,肮脏的对象,不确定是否会被Opera接受,但是对于那些拼命试图在其他Opera插件中实现新标签扩展的人来说,这可能是一条救赎之路。

有趣的事实: Opera开发并分发了一个插件,该插件可以帮助您从Opera上的chrome扩展存储中安装chrome扩展,但是新的选项卡扩展不起作用,安装失败并显示以下消息:< / p>

  

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

答案 1 :(得分:0)

Opera的Acceptance Criteria说:

  

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

即使您设法实现目标并替换标准的“新建标签”页面,该扩展程序也不会通过审核。

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

相关问题