如何获取Chrome扩展中刚刚关闭的标签的网址?

时间:2012-02-01 17:08:57

标签: google-chrome google-chrome-extension

应该是直截了当的,对吗?我们有以下听众可以使用。

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

由于该标签已被删除,因此tabId不再有效。这留下了我们的removeinfo对象,但chrome文档没有指出它包含哪些属性。我是一个javascript新手,所以我不知道是否有办法通过某种反射过程获得属性。

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

2 个答案:

答案 0 :(得分:3)

onRemoved中的

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

您必须使用onUpdated事件维护一系列网址作为标签。如果存在URL,请将其保存到数组中,当onRemoved事件触发时,您将保存该URL。

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

如果您想要关闭的标签页的网址,可以使用var url = urls[tabId];

答案 1 :(得分:1)

通常,如果您想浏览JS对象内容,可以使用console.log(thing)console.debug(thing)将其吐出到控制台。控制台打开时, Ctrl + Shift + J ,或选项 + Cmd + Mac上的 J

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

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