【问题标题】:How do you get the URL of a tab that has just been CLOSED in a Chrome Extension?如何获取刚刚在 Chrome 扩展程序中关闭的选项卡的 URL?
【发布时间】:2012-02-01 17:08:56
【问题描述】:

应该直截了当,对吧?我们可以使用以下监听器。

chrome.tabs.onRemoved.addListener(function (tabId, removeinfo))

tabId 将不再有效,因为该选项卡已被删除。这给我们留下了 removeinfo 对象,但 chrome 文档没有说明它包含哪些属性。我是一个 javascript 新手,所以我不知道是否有办法通过某种反射过程来获取属性。

有什么想法吗?到目前为止,我已经尝试了大约 50 次谷歌搜索。

【问题讨论】:

  • 您尝试过console.log(removeInfo) 并查看其中包含的内容吗?
  • 所以在这个问题被问到 5 年多之后,我认为这个听众没有任何改变:(

标签: google-chrome google-chrome-extension


【解决方案1】:

onRemoved 中的removeInfo 是一个包含单个布尔值的对象。它应该看起来像这样{ isWindowClosing: false }

您必须使用onUpdated 事件将一组 URL 维护为选项卡。如果 URL 存在,则将其保存到数组中,当onRemoved 事件触发时,您将保存 URL。

var urls = [];
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
  if (changeInfo.url) {
    urls[tabId] = changeInfo.url;
  }
});

当您想要刚刚关闭的标签页的 URL 时,您可以使用 var url = urls[tabId];

【讨论】:

  • 谢谢!给了你一个赞成票。将接受的答案提供给另一个人,因为答案几乎相同,但他的声誉较低,因此需要更多:)。我终于可以完成了。
【解决方案2】:

一般来说,如果你想戳穿 JS 对象的内容,你可以用console.log(thing)console.debug(thing) 将它吐到控制台。控制台使用 Ctrl+Shift+JOpt+Cmd+ 打开J 在 Mac 上。

不过,我可以告诉您,removeInfo 对象没有您需要的信息。这有点痛苦,但是您还必须向 onCreated 和 onUpdated 添加侦听器,以便使用一些全局对象作为哈希表来跟踪 tabID 到 URL 的映射,然后在该对象上使用 tabID检索 URL。请注意,这些事件需要tabs 权限。 (更多信息在这里:http://code.google.com/chrome/extensions/tabs.html

如果您可以描述您的用例并提出更改 API 的理由,我建议您在 http://new.crbug.com 开票。

【讨论】:

  • 谢谢!令我震惊的是,他们不会在其中包含这些明显有用的数据,但是由于您的回答,我现在可以构建我需要的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
相关资源
最近更新 更多