我正在使用Chrome扩展程序捕获所有网络数据。 我刚刚发现地址栏的更改可能导致tabId更改。任何人都对tabId何时发生变化有充分的了解?
答案 0 :(得分:4)
绝不是权威的答案:
它与预渲染有关,而这个特定情况可能与即时搜索有关。 当您在地址栏中输入内容时,Chrome显然会预取并预渲染某些页面以便更快地导航。 即使您没有通过地址栏触发此操作,Chrome仍然可以出于性能原因进行标签交换。
考虑description of chrome.tabs.onReplaced
:
由于预渲染或即时更换标签而被另一个标签替换。
或chrome.webNavigation
API文档中的this remark:
并非所有导航标签都与Chrome用户界面中的实际标签相对应,例如,正在预呈现的标签。此类标签无法通过标签API访问,您也无法通过
webNavigation.getFrame
或webNavigation.getAllFrames
请求有关这些标签的信息。一旦交换了这样的选项卡,就会触发onTabReplaced事件,并且可以通过这些API访问它们。
出于性能原因,Chrome可以生成一个单独的隐形标签,并将现有标签与此预渲染标签交换。
如果发生这种情况,系统会调度chrome.tabs.onReplaced
事件,提供新旧tabId
。