我正在尝试创建一个简单的Chrome扩展程序。 它应该在“Windows系统托盘Chrome图标上下文菜单”中添加一个项目“打开新标签页”(类似于Gmail检查器加号扩展程序所做的方式;请参见下面提供的第二张图片)。
当我点击该选项时,Chrome应该(检查是否有任何窗口处于打开状态。如果有,则应)打开一个新的标签页。如果没有打开的窗口,则应打开一个新的Chrome窗口并显示新的标签页。
到目前为止我所做的:
manifest.json
{
"manifest_version": 2,
"name": "Open New Tab",
"description": "This extension open a new tab page",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png"
},
"background":{
"scripts":["background.js"],
"persistent": false
},
"permissions": [
"background",
"activeTab"
]
}
background.js
chrome.browserAction.onClicked.addListener(function(tab)
{
chrome.tabs.create({ url: "chrome://newtab" });
}
);
background.html
<html>
<head>
<script>
chrome.browserAction.onClicked.addListener(function(window)
{
chrome.windows.create({url: "chrome://newtab", type: "normal"});
}
);
</script>
</head>
</html>
我已经加载了这个扩展程序。迄今为止,我的扩展程序对Chrome的影响如下:
1)Chrome窗口已经打开。我的图标出现在扩展程序列表中,并且可点击。
![enter image description here](https://istack.dev59.com/KpLC6.webp)
点击后,在同一窗口中打开了一个“新标签页”。这是正确的。(虽然我现在不需要它,但暂时保留。)
2)Chrome窗口已关闭,并允许Chrome在后台运行。右键单击Chrome托盘图标。我的扩展程序菜单“打开新标签页”出现在菜单中。
这也是正确的。单击它后,将创建一个新的Chrome窗口。(目前,我还没有检查窗口是否已存在。这将在以后进行。)
问题在于,在打开的新窗口中,Chrome自动打开“chrome://extensions”URL,而不是“新标签页”。这是错误的,我不明白为什么会打开扩展程序页面。我想打开新标签页,并传递“chrome://newtab”URL。如何让Chrome从这里打开新标签页?当我从桌面图标或Windows开始菜单启动Chrome时,Chrome可以正常工作。因此,问题似乎与我的代码有关。
感谢任何帮助。
browser action
。 - Haibara Aichrome.windows.onCreated
事件怎么样?当它被触发时,一个新窗口就会被创建,然后你可以调用chrome.tabs.create
来创建一个新标签页。 - Haibara Aichrome.windows.onCreated.addListener(function(tab) { chrome.tabs.update(null, { url: "chrome://newtab" }); });
- PRinCEKtd