【问题标题】:Chrome Extension: Open window when running in backgroundChrome 扩展程序:在后台运行时打开窗口
【发布时间】:2013-09-29 07:24:48
【问题描述】:

所以,我有我的 chrome 扩展程序,可以在后台正常运行。每隔几个小时,它就会使用通知 API 向用户提问。

如果他们点击一个答案,我们会在当前窗口中打开一个标签。

问题:如果没有打开 chrome 窗口(即扩展程序作为“让 google chrome 在后台运行”选项的一部分运行),则选项卡不会打开。

只要至少打开一个 chrome 窗口,以下代码就可以正常工作:

// tried this too: chrome.windows.create();
chrome.tabs.create({url: pathToGo});

如果没有打开的窗口,如何使“chrome.windows.create()”实际创建一个窗口。

【问题讨论】:

  • 这对我来说似乎是预期的行为。后台页面报告的错误控制台是什么?也许您可以将您的 tab.create 请求排队并等待用户决定重新打开浏览器?
  • 是的,我就是这么想的——他们不希望你强迫打开窗户。
  • 并且看不到控制台,因为打开检查器算作一个窗口,所以它工作正常。
  • 您可以重新打开 Chrome 并打开您的后台页面。我相信控制台仍然会保留所有消息
  • 您是否绝对确定用户想要打开 chrome 并在他们认为已关闭时弹出一个弹出窗口?我绝对不会,除非它是非常重要的事情(问一个问题听起来并不重要......)。

标签: javascript google-chrome google-chrome-extension


【解决方案1】:

使用chrome.windows.getAll(object getInfo, function callback) API 获取所有打开的窗口。 如果在回调中,窗口数组为空,则使用chrome.windows.create(object createData, function callback) 创建一个新窗口。

如果您无法创建新窗口,请使用chrome.notifications API。 http://developer.chrome.com/extensions/notifications.html

【讨论】:

  • 谢谢,但正如我在 sn-p 中评论的那样 - 我已经尝试了 chrome.windows.create() 方法,如果已经打开了另一个窗口,它只会打开一个新窗口。跨度>
  • 在这种情况下最好使用chrome.notifications API。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 2018-04-29
  • 1970-01-01
  • 1970-01-01
  • 2018-07-22
相关资源
最近更新 更多