javascript - 等待 document.body 存在

标签 javascript html css event-handling dom-events

我编写了一个 Chrome 扩展程序,它在页面加载之前运行(使用属性 "run_at": "document_start")。 问题是我想在网页主体创建后立即添加一个 div 标签。 在此之前,document.body 为 null,因此我无法向其附加标签。

我不关心 body 的满负荷,我只需要它存在。

我正在尝试找到在创建 html 中的 body 标记(未完全加载,刚刚创建)时收到警报的最佳方式。我可以为这种情况编写任何事件处理程序吗?

此外,我不想使用 jQuery 或任何其他非内置库。

最佳答案

你可以使用 mutation observerdocument.documentElement 上监听其 childList 的变化并查看添加的内容是否是 body

示例:Live Copy

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Example</title>
  <script>
    (function() {
      "use strict";

      var observer = new MutationObserver(function() {
        if (document.body) {
          // It exists now
          document.body.insertAdjacentHTML(
            "beforeend",
            "<div>Found <code>body</code></div>"
          );
          observer.disconnect();
        }
      });
      observer.observe(document.documentElement, {childList: true});
    })();
  </script>
</head>
<body>
  <div id="foo"></div>
</body>
</html>

关于javascript - 等待 document.body 存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26324624/

相关文章:

javascript - 如何使用 momentjs 查找某个国家/地区的可用时区

javascript - 无法动态构造链接标签

html - 链接和键盘焦点

jquery - 在显示器 :table element hidden with display:none 上使用 show() 时保持边框间距

javascript - 单击 kogrid 中的复选框时获取行数据

javascript - 如何才能使数组中的值一旦被使用,就不能再次使用,直到数组完成为止?

javascript - 如何获取当前的 CSS3 过滤器属性函数参数值?

html - div 的响应式背景图像的 CSS 问题

css - 使用 div 显示类似表格的数据

javascript - 如何改变背景元素的位置?