Chrome扩展程序:获取引荐来源选项卡

3

我怎么知道一个标签页是从另一个标签页的页面链接还是内容脚本打开的?
而且如果可以的话,我也需要那个标签页的信息。

chrome.tabs.onCreated.addListener(function(id, info, tab){
      //  tab doesn't contain any such info
});

很抱歉,如果您需要更多信息,您需要将内容脚本注入到该选项卡中。 - Xan
那我甚至不能获取选项卡的 ID 吗? - NestedWeb
1个回答

5
你的回调格式有误。
根据文档,回调函数只需要一个Tab参数,而不是三个。
chrome.tabs.onCreated.addListener(function(tab){
  // You now have things like tab.id exposed
  // If you have "tabs" permission, also things like tab.url

  // You also have tab.openerTabId for "referrer" tab

  // If you have host permissions for the tab:
  chrome.tabs.executeScript(
    tab.id,
    { code: "document.referrer;" },
    function(result) {
      // Here, you have the "real" referrer,
      // which would be empty for tabs opened via `chrome.tabs`
    }
  );
});

抱歉评论这个旧答案,但在我的情况下非常奇怪。即使我创建一个新的空白标签页并输入要搜索的内容,传递给onUpdated的标签对象仍具有其左侧相邻标签页的openerTabId。 - aderchox
我想知道手动打开一个标签页是否会将 openerTabId 设置为在打开新标签页之前处于活动状态的标签页。测试这个理论应该很容易。 - Xan
谢谢您的回复。是的,我想那就是问题所在,但是您是说这是正常现象吗?我认为这听起来很像一个 bug,而且文档中也没有提到过这一点。 - aderchox
1
我在crbug.com上找不到太多信息 - 我建议你在那里开一个工单。 - Xan
只是让你知道,我刚刚尝试了更多的场景,似乎问题有点不同,这只发生在最后一个标签页(最右边的标签页)!手动打开所有标签页右侧的空白标签会将tab对象的openerTabId设置为在打开此标签页之前最后活动的标签页的id。我现在正在提出一个问题。谢谢。 - aderchox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接