Javascript 当我在地址栏中输入新的搜索,然后它将我导航到谷歌页面结果时,为什么Chrome会改变tabId

Javascript 当我在地址栏中输入新的搜索,然后它将我导航到谷歌页面结果时,为什么Chrome会改变tabId,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我在后台脚本中编写了以下简单代码: chrome.tabs.onActivated.addListener(function (info) { console.log(info.tabId); }); 然后我去打开新标签。控制台日志73。然后我更新打开的选项卡的url,控制台中没有任何记录。但是,如果我在同一选项卡上的地址栏中键入任何内容,并且google结果页面打开,那么新的id77将登录到控制台 这里发生了什么?当您在那里键入内容时,Chrome会预渲染omnibar搜索结果。它使

我在后台脚本中编写了以下简单代码:

chrome.tabs.onActivated.addListener(function (info) {
    console.log(info.tabId);
});
然后我去打开新标签。控制台日志
73
。然后我更新打开的选项卡的url,控制台中没有任何记录。但是,如果我在同一选项卡上的地址栏中键入任何内容,并且google结果页面打开,那么新的id
77
将登录到控制台


这里发生了什么?

当您在那里键入内容时,Chrome会预渲染omnibar搜索结果。它使用一个隐藏的内部选项卡,选项卡ID为-1,如果用户通过Enter/mouseclick确认搜索,则会分配一个新的选项卡ID。这个带有新tabId的新选项卡完全替换了当前选项卡

预呈现选项卡替换事件:


预渲染可能会被禁用。

我这边不重新编程…@HaibaraAi,当您在地址栏中键入'landing',然后按
enter
,是否会转到google结果页?@HaibaraAi这可能取决于启用了“即时搜索”设置。谢谢,你知道还有什么情况下
tabId
可以更改吗?我会尝试重新措辞。改变的不是
tabId
,而是选项卡本身被替换为具有不同tabId的不同选项卡,而属性本身可以改变的唯一情况是它第一次也是唯一一次被指定给隐藏的预渲染选项卡(
-1
成为实际的新值)。我明白了,非常感谢。我试图将我的逻辑与tabId联系起来,现在我在想,我是否会遇到类似于您的