【发布时间】:2015-03-09 16:57:18
【问题描述】:
我正在为 gmail 创建一个 chrome 扩展程序,当某些页面对象加载时,我发现一些奇怪的不稳定性。由于我正在尝试修改 GMAIL DOM(为我的扩展自定义它),因此需要在我的初始化程序运行之前完全加载它。我的扩展总是在 DOM 完全加载之前初始化好,所以我需要一种方法让它轮询,直到 DOM 完全形成来做它的事情。
我曾尝试使用 document.readyState 来轮询文档,以便知道何时开始修改完全加载的 DOM,但它并不总是有效。
一旦页面开始加载,我将每 100 毫秒轮询一次的 document.readyState 打印输出放入控制台,我注意到在 DOM 完全加载之前,大约 1/10 的页面加载 document.readyState 变为“完成”。我可以告诉这一点,因为我为 GMAIL 撰写按钮做了一个 jQuery 选择器,当发生这种情况时它是空的,并且每隔一次按预期找到它(它会找到撰写按钮)。
为什么会这样?有没有更好的方法让我的扩展程序初始化脚本检查以确保在触发 DOM 模块之前完全加载 DOM?
编辑—— 我有检查 document.readyState 的脚本作为内容脚本注入到 UI 中。
【问题讨论】:
-
如果您正在等待撰写按钮出现,为什么不轮询该按钮而不是
document.readyState? readyState 和那个按钮之间没有保证的关系......
标签: javascript google-chrome dom google-chrome-extension gmail