gpt4 book ai didi

javascript - Gmail Chrome 扩展和 document.readyState

转载 作者:行者123 更新时间:2023-11-30 12:30:29 25 4
gpt4 key购买 nike

我正在为 gmail 创建一个 chrome 扩展程序,我发现在加载某些页面对象时出现一些奇怪的不稳定性。因为我正在尝试修改 GMAIL DOM(为我的扩展自定义它),所以它需要在我的初始化程序运行之前完全加载。我的扩展总是在 DOM 完全加载之前就开始初始化,所以我需要一种方法让它进行轮询,直到 DOM 完全形成以执行它的操作。

我曾尝试使用 document.readyState 来轮询文档,以便我知道何时开始修改完全加载的 DOM,但它并不总是有效。

一旦页面开始加载,我将每 100 毫秒轮询一次的 document.readyState 打印输出放入控制台,我注意到在 DOM 完全加载之前,大约 1/10 的页面加载 document.readyState 变为“完成”。我之所以能说出这一点,是因为我为 GMAIL 撰写按钮做了一个 jQuery 选择器,发生这种情况时它变成空的,并且每隔一段时间都会按预期找到它(它会找到撰写按钮)。

为什么会这样?有没有更好的方法让我的扩展初始化脚本检查以确保在触发 DOM mod 之前 DOM 已完全加载?

编辑——我将检查 document.readyState 的脚本作为内容脚本注入(inject)到 UI 中。

最佳答案

Gmail 网站是动态的。 readyState/DOMContentLoaded 和其他 friend 都没什么用,因为大部分 UI 都是动态构建的,不在“初始”DOM 中。这正是您所观察到的。

您需要像 RobW 提到的那样轮询撰写按钮,或者观察它是否被添加 MutationObserver events .同样值得注意的是 mutation-summary library .

关于javascript - Gmail Chrome 扩展和 document.readyState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27893300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com