【发布时间】:2023-03-02 23:44:01
【问题描述】:
我从服务器得到一个原始的 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);
}
【问题讨论】:
-
“我不能简单地创建一个新的脚本元素,因为这个字符串已经包含了该部分。” 如果删除该部分会怎样?
str.replace(/^<script>|<\/script>$/g, ''). -
我永远不会明白为什么人们免费为 SO 工作。干得好,大厅监视器。
-
"/"字符串中"</script>"处的字符应被转义。
标签: javascript dom appendchild