我编写了一个 Chrome 扩展程序,它在页面加载之前运行(使用属性 "run_at": "document_start"
)。
问题是我想在网页主体创建后立即添加一个 div
标签。
在此之前,document.body
为 null,因此我无法向其附加标签。
我不关心 body 的满负荷,我只需要它存在。
我正在尝试找到在创建 html 中的 body
标记(未完全加载,刚刚创建)时收到警报的最佳方式。我可以为这种情况编写任何事件处理程序吗?
此外,我不想使用 jQuery
或任何其他非内置库。
最佳答案
你可以使用 mutation observer在 document.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/