【问题标题】:Script in head section to create a DIV in the body在 head 部分编写脚本以在 body 中创建一个 DIV
【发布时间】:2021-01-07 08:54:45
【问题描述】:

我必须在 head 中放置一个脚本来创建一个 DIV 元素并将这个 DIV 插入到 body 标记中。

var condiv = document.createElement("div");
(condiv.innerHTML = " "),
    condiv.setAttribute("class", "ads"),
    document.body.appendChild(condiv),
    0 === condiv.offsetHeight ||
        (function () {

        }

脚本在我将其插入正文时有效,但之前无效。当脚本位于使用纯javascript而不是Jquery的头部(之前)时,有没有办法将DIV添加到正文中?将它放在头部非常重要,因为我必须将它放在头部的其他脚本之前,而我不想将这些脚本放在正文中。我知道,我可以使用 document.head.appendChild 但头部中的 HTML 元素未验证。感谢您的宝贵时间。

【问题讨论】:

  • 它可能不起作用,因为代码在正文加载之前执行,您可以将代码包装在 DOMContentLoaded 事件中。这将等到您的页面准备就绪后再执行。
  • 谢谢。正文中的脚本是什么?使用 domcontentloaded,此脚本将在我的代码运行之前执行,对吗?
  • 一旦我在末尾添加了一个括号并将代码放入addEventListener('load', ()=>{ /* in here */ });,它就起作用了。当然,我很确定你不知道逗号运算符的作用。

标签: javascript


【解决方案1】:

由于脚本位于 head 部分并在创建 body 标记之前加载,因此您不会找到要在其中放置 DIV 的 body 标记。 有多种方法可以包装脚本,以便在加载 DOM 后运行。每个都有细微差别。 你可以在MDN 看到它们的例子。 基本上,您可以通过在此函数中编写此代码来加载此代码,并且它将在加载所有页面(包括图像和其他脚本)后加载:

window.addEventListener('load', (event) => {
   var condiv = document.createElement("div");
   (condiv.innerHTML = " "),
      condiv.setAttribute("class", "ads"),
      document.body.appendChild(condiv),
      0 === condiv.offsetHeight ||
          (function () {

          }
});

只有在this question 中详细说明的 DOM 加载后才能加载它我认为那里的答案会更好地供您使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2014-11-19
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多