我正在开发Chrome扩展程序,可以增强LinkedIn中的行为。我设置了webNavigation.onCompleted.addListener
。我只想在页面完全"完全"之后运行我的代码。解决。我计划通过以下方式做到这一点:
关于帧ID的说明
标签内的框架可以通过框架ID识别。帧ID 主框架始终为0,子框架的ID为正 数。一旦文档在框架中构建,其框架ID 在文件的生命周期内保持不变。从Chrome 49开始, 这个ID在帧的生命周期内也是恒定的(跨越 多个导航)。
https://developer.chrome.com/extensions/webNavigation#event-onHistoryStateUpdated
基于此模型构建的代码就是这样。
if (details.frameId == 0){
console.log("%c Saw frameId 0", 'color: green');
} else {
console.log("%c Saw frameId != 0; guarding", 'color: tomato');
return;
}
刷新页面时,我看到frameId
0(是的!)。但是,当我访问网站的其他部分并导航回同一位置时,我不看到frameId0。屏幕截图显示了"硬刷新"经验和(在标记之后)导航体验。
所以我的问题是:我怎样才能可靠地知道被诅咒的页面何时被真正加载。我认为frameId == 0
将是神奇的子弹,但它继续阻碍。
我的假设是turbolinks或Ember以某种方式抑制该信号,但我正在进一步调查。是否有更好的赛事要跟踪?
谢谢!