今天继续做 Search 浏览器插件的需求,产品设计要求可以在设置(options.html
)页面控制浏览器的新标签页是否被插件覆盖。据我所知类似的插件很多,要么叫新标签页,要么叫起始页,随便找了几个看了下,它们都是通过配置 manifest.json
属性来实现的吗,具体详见 文档。
产品不信邪,去问了下 AI 搜索引擎,得到的答案也是没有相关的 API 可以做这样的操作。但是从它提供的代码来看有个变通的办法,就是在打开新标签页时改写访问的地址(怎么感觉很像一些流氓软件会干的事情),设置页控制是否执行这样的操作就可以。
browser.tabs.onCreated.addListener((tab) => {
if (tab.pendingUrl === "chrome://newtab/") {
// AI 搜索引擎给的,并没有什么作用
// browser.tabs.update(tab.id, { url: "chrome://newtab" });
// 我想到的改写成插件 URL
browser.tabs.update(tab.id, { url: browser.runtime.getURL("/newtab.html") })
}
});
改成这样,结果就是新开标签页会变成一大段很长的 URL。产品并不买帐,因为它看隔壁其他厂的插件没有这么乱的 URL(因为人家也是 manifest.json
写死的),一番讨论后暂时搁置了这个需求,也不知道这个问题是否还有其他更优解...