如何在最后加载时将HTML元素插入到闭合标签之前。

huangapple go评论59阅读模式
英文:

How to insert html element just before body closing tag as last loading

问题

我有一个加载了多个附加组件的页面,我需要在</body>标签关闭之前作为最后加载的内容插入HTML元素(脚本)。我尝试了一些JavaScript方法,如appendChildinsertAdjacentElement,但似乎都无法正常工作,因为还有其他脚本在加载。

到目前为止我尝试但未成功的方法:

使用appendChildinsertAdjacentElement获得相同的结果:

var myscript = document.createElement('script');
myscript.setAttribute('src', 'https://xxxxx/myscript.min.js');
myscript.async = true;
document.body.appendChild(myscript);    document.body.insertAdjacentElement('beforeend', myscript);

结果:

<body>
   <element1>
   <element2>
   *<myscript> <--- 在此处插入*
   <element3>
   <element4>
   <element5>
   <element6>
   <element7>
</body>

期望的结果:

<body>
   <element1>
   <element2>
   <element3>
   <element4>
   <element5>
   <element6>
   <element7>
   *<myscript> <--- 在此处插入*
</body>

如何在最后加载时将HTML元素插入到</body>闭合标签之前。

英文:

I got a page that loads several add-ons and I need to insert html element (script) just before body closing tag (</ body>) as last loading. I tried some javascript methods such as appendChild and insertAdjacentElement, but none seem to work because of loading other scripts.

What I have done so far and didn't work:

Using appendChild or insertAdjacentElement got same result:

var myscript = document.createElement(&#39;script&#39;);
myscript.setAttribute(&#39;src&#39;,&#39;https://xxxxx/myscript.min.js&#39;);
myscript.async = true;
document.body.appendChild(myscript);  or  document.body.insertAdjacentElement(&#39;beforeend&#39;, myscript);

Result:

&lt;body&gt;
   &lt;element1&gt;
   &lt;element2&gt;
   *&lt;myscript&gt; &lt;--- inserted here*
   &lt;element3&gt;
   &lt;element4&gt;
   &lt;element5&gt;
   &lt;element6&gt;
   &lt;element7&gt;
&lt;/body&gt;

Expected result:

&lt;body&gt;
   &lt;element1&gt;
   &lt;element2&gt;
   &lt;element3&gt;
   &lt;element4&gt;
   &lt;element5&gt;
   &lt;element6&gt;
   &lt;element7&gt;
   *&lt;myscript&gt; &lt;--- insert here*
&lt;/body&gt;

如何在最后加载时将HTML元素插入到</body>闭合标签之前。

答案1

得分: 1

看起来 JavaScript 代码可能在 HTML 文档完全加载之前执行。为了避免这种情况,将你的 JavaScript 代码放在 DOMContentLoaded 事件内,以确保代码在 DOM 完全加载后运行:

document.addEventListener('DOMContentLoaded', function() {
   var myscript = document.createElement('script');
   myscript.setAttribute('src','https://xxxxx/myscript.min.js');
   myscript.async = true;
   document.body.appendChild(myscript);
});
英文:

It looks like the javascript code might be executed before the html document is fully loaded. To avoid this place your javascript code inside a DOMContentLoaded to make sure the code runs after the DOM is fully loaded:

document.addEventListener(&#39;DOMContentLoaded&#39;, function() {
   var myscript = document.createElement(&#39;myscript&#39;);
   myscript.setAttribute(&#39;src&#39;,&#39;https://xxxxx/myscript.min.js&#39;);
   myscript.async = true;
   document.body.appendChild(myscript);
});

答案2

得分: 0

似乎对我有用,使用append

如何在最后加载时将HTML元素插入到</body>闭合标签之前。

英文:

seems to be working for me with append

如何在最后加载时将HTML元素插入到</body>闭合标签之前。

huangapple
  • 本文由 发表于 2023年7月20日 10:52:49
  • 转载请务必保留本文链接:https://go.coder-hub.com/76726389.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定