在Chrome扩展内容脚本中,我必须在处理文档之前等待document.ready吗?

Dav*_*lls 32 javascript jquery google-chrome google-chrome-extension

具体来说,我正在评估页面上的所有图像以查看它们是否具有某个属性,然后根据这些属性向DOM添加一些新的<divs>.我必须等到document.ready才能执行这些修改,以确保Chrome已加载所有必要的DOM部分吗?

我遇到的问题是,有时document.ready需要一段时间才能触发并且用户已经在浏览页面,想知道为什么我的扩展程序还没有产生任何影响.这个问题通常只会持续一段时间,但这足以令人烦恼.

如果我不打扰等待document.ready,而是立即处理文档,一切似乎都有效; 但我想知道我是否只是幸运.

Moh*_*our 62

实际上,你不必等待.您可以立即在内容脚本中处理.只要确保你不使用document_start的run_at属性.

在document_end,DOM完成后立即注入文件,但在加载图像和帧之类的子资源之前.document_idle(默认值)甚至更晚.

{
  "name": "My extension",
  ...
  "content_scripts": [
    {
      "matches": ["http://www.google.com/*"],
      "css": ["mystyles.css"],
      "js": ["jquery.js", "myscript.js"],
      "run_at": "document_end"
    }
  ],
  ...
}
Run Code Online (Sandbox Code Playgroud)

  • 同意如果你想检查文件已加载上面提到的方法是好的.但是,即使在加载Document之后,DOM更新也会发生.这可能是AJAX功能.就像添加"DOMSubtreeModified"的监听器一样.window.addEventListener("DOMSubtreeModified",(event) - > console.log"DOMSubtreeModified",event) (4认同)