Google Chrome扩展程序-单击工具栏图标时,打开“新标签”


72

如何为Chrome创建扩展程序,以在工具栏上添加图标,当您单击它时,它会打开一个带有某些本地网页的新标签页(例如:f.html)?

我看到了这个问题,但并没有真正解释我应该在清单文件中添加什么...

Answers:


98

对于较新的Chrome应用,情况并非如此。

具有manifest_version:2的较新的chrome应用程序需要使用以下选项卡打开:


chrome.browserAction.onClicked.addListener(function(activeTab)
{
    var newURL = "http://www.youtube.com/watch?v=oHg5SJYRHA0";
    chrome.tabs.create({ url: newURL });
});


这是更好的,更多的电流,更准确的答案,仅供参考
扎克·夏皮罗

5
@DehanWjiesekara将其放在例如background.js中,并"background": { "scripts": [ "background.js" ] }放在清单中。
simonp

tabs.create在onInstalled中使用时,在加载一个基本上只有一个本地index.html的解压缩扩展名的上下文中将触发,而现在仅在新选项卡中打开index.html的background.js会触发吗?由于某种原因,目前对我不起作用,一定是一些简单的即时消息丢失了。
Stephen Tetreault,

请记住,使用“标签”权限会在安装时向用户显示警告,提示Chrome扩展程序需要“读取浏览历史记录”,但是如果您想打开一个新标签,则可以使用“ activeTab”权限,它不会触发该警告。
Mahmoud Felfel '19

您必须这样做,不是吗?
mukund

53

好吧,在扩展名docs中,它在manifest中指出,您需要包括“ tabs”作为其权限。他们以相同的方式解释hello world应用程序:

清单文件:

{
  "name": "My Extension",
  "version": "1.0",
  "description": "Opens up a local webpage",
  "icons": { "128": "icon_128.png" },
  "background_page": "bg.html",
  "browser_action": {
    "default_title": "",
    "default_icon": "icon_19.png"
  },
  "permissions": [
    "tabs"
  ],
}

后台页面中,您将监听浏览器操作上的鼠标单击事件。

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.create({'url': chrome.extension.getURL('f.html')}, function(tab) {
    // Tab opened.
  });
});

如上所述,您将看到我使用了另一篇文章中看到的问题。请注意,这未经测试,但我认为应该可以。


1
请注意,添加“标签”权限将在安装时向用户显示“读取您的浏览历史记录”权限警告。文档说大多数chrome.tabs人不需要此权限developer.chrome.com/extensions/tabs因为我没有密切注意这一点,所以最近我从chrome.google.com/webstore/detail/inbox-中

6

chrome.tabs.create需要“标签”的许可。

只需使用扩展名中的window.open,无需任何许可。并且代码更短。我建议这种解决方案。

window.open(url,'_blank');

我确实在扩展程序中使用了相同的代码,以在单击通知按钮时打开新选项卡。但是现在三个月后,单击该按钮时,我得到了aw..snap页面错误。你知道为什么会这样吗?附言:如果我使用其他网址,例如:www.google.com,则效果很好,但不适用于我的网站。
索纳(Sona)2016年

这似乎对我有用(尽管我只在我正在研究的本地无捆绑扩展中尝试过)。
simonp
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.