如何在没有 jQuery 的情况下将原始 JavaScript 标签附加到 document.body

How to append a raw JavaScript tag to document.body without jQuery

我从服务器得到一个原始的 JavaScript 标签:

"<script>alert('hi');</script>"

现在,我需要将它附加到 <body> 以便它触发。我不能简单地创建一个新的脚本元素,因为这个字符串已经包含 <script> 部分。有没有类似于

的东西
child = document.createElementFromHTML("<script>alert('hi');</script>");
document.body.appendChild(child)

感谢您的帮助。

编辑

这就是为什么它不是重复的,大厅监视器:

如果您将 div 的内部 html 设置为脚本,它不会触发。我需要将仅由文本生成的元素附加到正文。

编辑 2

最终解决方案:

window.onload = function() {
document.body.innerHTML += "<script>alert('hi');</script>";
var script = document.scripts[document.scripts.length - 1];
var s = document.createElement("script");
s.textContent = script.textContent;
document.body.removeChild(script);
document.body.appendChild(s);
}

通过这种方式,您可以在 HTML

中插入 <script> 标签

var script = document.body.appendChild(document.createElement('script'));
script.text = 'alert("Hi!");'

您可以将 document.body.innerHTML<script> html 字符串连接起来,获取 document 中最后一个 script.textContent,创建 script 元素,将 script 元素 .textContent 设置为从连接的 html <script> 字符串中检索到的值,删除最后一个 <script>,将新的 <script> 附加到 document.body.

<script>
  document.body.innerHTML += "<script>alert('hi');<\/script>");
  var script = document.scripts[document.scripts.length - 1];
  var s = document.createElement("script");
  s.textContent = script.textContent;
  document.body.removeChild(script);
  document.body.appendChild(s);
</script>