Google chrome extension Chrome扩展:识别;实际的;来自webNavigation事件的选项卡

Google chrome extension Chrome扩展:识别;实际的;来自webNavigation事件的选项卡,google-chrome-extension,Google Chrome Extension,我试图确定我收到的“webNavigation.onCompleted”标签是否是“实际”标签 如文件所述: 文档中的简短引用: 关于选项卡ID的说明: 并非所有导航选项卡都对应于Chrome用户界面中的实际选项卡,例如,正在预渲染的选项卡。这些选项卡无法通过tabs API访问,您也无法通过webNavigation.getFrame或webNavigation.getAllFrames请求有关这些选项卡的信息。一旦这样一个选项卡被交换进来,就会触发一个onTabReplaced事件,并且可

我试图确定我收到的“webNavigation.onCompleted”标签是否是“实际”标签

如文件所述:

文档中的简短引用:

关于选项卡ID的说明: 并非所有导航选项卡都对应于Chrome用户界面中的实际选项卡,例如,正在预渲染的选项卡。这些选项卡无法通过tabs API访问,您也无法通过webNavigation.getFrame或webNavigation.getAllFrames请求有关这些选项卡的信息。一旦这样一个选项卡被交换进来,就会触发一个onTabReplaced事件,并且可以通过这些API访问它们

因此,现在当我得到一个事件时,我在试图确定该选项卡是否为“实际”时遇到了两个问题:

  • 文档中描述的场景,但是我看到onTabReplaced可以在onCompleted之前/之后调用, 或者甚至不调用,即使我希望调用它,因为我在tabs.onCreate中创建的选项卡列表中没有选项卡id, 然后,页面将显示在选项卡中

  • 在Google chrome页面中预先呈现的页面(例如Google表示“ford”),最终不会显示在选项卡上

  • 如果您不熟悉预渲染:

    我认为这些案例是不同的,因为我看到不同的预渲染页面。 最终你将成为tads,而那些最终不被使用的人。 一个页面最终被“导航到”,而另一个页面则被“缓存”

    但据我所知,使用WebNavigationAPI无法检测到这种差异

    所以我的问题是——有没有办法区分(希望使用WebNaviagation api), 在“实际”选项卡和将显示为选项卡的预呈现页面之间, 还有一个预呈现的页面将保留在缓存中(现在)

    只有两个澄清,关于我可以使用的解决方案,但在我看来“不好”, 至少在这个阶段

  • 文档中说“这些选项卡无法通过tabs API访问”。 所以从技术上讲,我可以尝试使用这个API,得到一个异常,这样就可以知道它是“pre-renderd”选项卡, 但是我不喜欢我的代码为此使用异常,所以我正在寻找一种“干净”的方法

  • 在webNavigation.onComplete中,我可以将超时设置为1秒, 然后如果在这一秒钟内,我发现这个标签 移动为“实际”选项卡。而不是呆在“缓存”里。 但在这1秒或我选择的任何时间内,可能会有很多其他事件, 甚至选项卡也可以关闭。 所以,我再次寻找一个“干净”的解决方案

  • 谢谢你的帮助