我希望扩展HTML在新选项卡中打开,而不是在弹出窗口中打开。现有的扩展Session Session Buddy具有我想要复制的确切行为。
问题在于,当我单击工具栏图标时,Chrome会不停地打开新的扩展程序选项卡,而所需的行为是(显然)只是打开了一个选项卡。奇怪的是,当我使用https://stackoverflow.com/之类的“ Web URL”时,只能打开一个选项卡。
manifest.json
:
{
"manifest_version": 2,
"name": "angular chrome extension boilerplate",
"version": "1.0.0",
"background": {
"scripts": ["background.js"],
"persistent": true
},
"permissions": [
"activeTab",
"tabs",
"background"
],
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
}
background.js
:
chrome.tabs.create({ url: chrome.extension.getURL('index.html') });
这个网站上的几篇文章都有类似的问题,但是没有建议的解决方案对我有用:
onClicked
偶数添加侦听器时,单击扩展程序工具栏图标不会发生任何事情。事实证明,正确的方式在点击工具栏图标的号召包去开一个选项卡chrome.tabs.create()
中的onClicked
监听器:
修改后background.js
:
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.create({ url: chrome.extension.getURL('index.html'), selected: true });
});
最初,这不会因工作chrome.browserAction.onClicked
是undefined
。为了解决这个问题,需要向添加一个空"browser_action"
对象manifest.json
。同样,以前使用的持久性背景和activeTab
权限也是不必要的,可以将其删除:
修改后manifest.json
:
{
"manifest_version": 2,
"name": "angular chrome extension boilerplate",
"version": "1.0.0",
"browser_action": { },
"background": {
"scripts": ["background.js"],
"persistent": false
},
"permissions": [
"tabs",
"background"
],
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句