tabId何时更改

Kel*_*vin 4 google-chrome google-chrome-extension

我正在使用Chrome扩展程序来捕获所有网络数据。我刚刚发现更改地址栏会导致tabId更改。任何人都对tabId何时有更改有完整的了解?

Xan*_*Xan 5

绝不权威答案:

它与预渲染有关,而特定情况可能与即时搜索有关。当您在地址栏中键入内容时,Chrome显然会预取和预呈现某些页面,以加快导航速度。即使您没有通过地址栏触发此操作,出于性能原因,Chrome仍然可以进行标签页交换。

考虑以下描述chrome.tabs.onReplaced

当一个标签由于预渲染或即时而被另一个标签替换时触发。

或者,此注释chrome.webNavigationAPI文档中:

并非所有导航选项卡都对应于Chrome UI中的实际选项卡,例如,正在预渲染的选项卡。此类标签无法通过标签API访问,也无法通过webNavigation.getFrame或请求有关它们的信息webNavigation.getAllFrames。一旦交换了此类选项卡,就会触发onTabReplaced事件,并且可以通过这些API对其进行访问。


总结一下:

出于性能原因,Chrome可以生成单独的不可见标签,并使用此预渲染的标签交换现有标签。

如果发生这种情况,将chrome.tabs.onReplaced调度一个事件,提供新旧tabId的。